pdo를 사용하여 SQL Server DB에 이미지 삽입

나찬
$stmt=$con->query("insert into tbl(data) values(0x".$data1['hex'].")");

이것은 SQL 문이며 잘 작동합니다. 가치

0xFFD8FFE000104A46494600010101006000600000FFDB00430... 

데이터베이스에 저장되고 확인하면 이미지가 저장됩니다. 그러나 나는 PDO를 사용하여 이것을하려고하는데 저장된 값이 다르고 이미지가 표시되지 않습니다. 내 코드는 다음과 같습니다.

$datastring = file_get_contents("image.JPG");
$data1 = unpack("H*hex", $datastring);
$data = '0x'.$data1['hex'];

$stmt=$conp->prepare("insert into tbl(data) values(:data)");
$stmt->bindparam(':data', $data);
$stmt->execute();

데이터베이스의 가치

0x30786666643866666530303031303461343634393436303...

무엇이 차이를 만드는가? 내가 뭔가 잘못하고 있습니까? PHP 5.6에서 Microsoft pdo_odbc 드라이버와 함께 SQL Server 2008R2를 사용하고 있습니다.

stef77

첫 번째 Google 히트 mssql varbinary pdo: https://social.msdn.microsoft.com/forums/sqlserver/en-US/221dcea2-438d-4a3a-b438-b98bff8f3d57/using-pdostatementbindvalue-to-update-varbinary-fields

$sth->bindParam(1, $pswd, PDO::PARAM_LOB, 0, PDO::SQLSRV_ENCODING_BINARY);

따라서 $stmt->bindParam(':data', $data, PDO::PARAM_LOB, 0, PDO::SQLSRV_ENCODING_BINARY);작동해야합니까?

편집 : Aaaaah, 바보 나 : 물론 이것은 작동하지 않습니다. 바이너리를 전달하는 것이 아닙니다. 문자열은 16 진수로 인코딩 된 것처럼 보이는 임의의 ASCII 문자열입니다. 다음과 같은 사이트로 이동하십시오. http://www.rapidtables.com/convert/number/hex-to-ascii.htm 을 붙여넣고 0x30786666643866666530303031303461343634393436303ASCII로 변환하면 무엇을 얻습니까? 0xffd8ffe000104a4649460, 원본 데이터.

PDO / MSSQL이 16 진수로 변환하는 바이너리 데이터를 전달한다고 생각하므로 0ASCII는 3016 진수, xis 78, fis 66등입니다. 아이디어를 얻으 셨기를 바랍니다.

첫 번째 작업 예제와의 차이점은 미묘합니다. 전달 된 값 ( 0x...)을 따옴표로 묶지 않으므로 16 진수 형식의 "진정한 이진"으로 처리됩니다. PDO 접근 방식에서 전달 된 값은 예를 들어 SQL 주입 공격을 방지하기 위해 PDO에 의해 내부적으로 "인용"됩니다. 첫 번째 예제에 따옴표를 넣으면 PDO와 동일한 결과를 얻을 수 있습니다.

무엇을해야합니까? 16 진수 인코딩은 잊어 버리고 odbc 드라이버 / MSSQL이 변환을 처리하도록합니다. $datastring대신 통과 $data하면 괜찮을 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

ASP.NET MVC를 사용하여 Excel 데이터를 SQL Server에 삽입

분류에서Dev

JOIN 및 외래 키를 사용하여 SQL Server 테이블에 삽입

분류에서Dev

Excel 시트에서 제품의 URL 이미지를 다운로드하여 SQL Server에 이미지로 삽입

분류에서Dev

SQL Server에서 XQuery를 사용하여 XML에 요소 삽입

분류에서Dev

MS Access를 사용하여 SQL Server에 삽입

분류에서Dev

Parameter.Dbtype (저장 프로 시저)을 사용하여 SQL Server 데이터베이스에 이미지 삽입

분류에서Dev

SQL 쿼리를 사용하여 DB2에 BLOB 데이터 삽입

분류에서Dev

SQL Server 트리거를 사용하여 table_2 (Log)에 데이터를 삽입하는 방법

분류에서Dev

PDO를 사용하여 SQL에 파일 이름을 삽입 할 수 없습니다.

분류에서Dev

SSIS를 사용하여 MySQL에서 SQL Server로 행을 삽입 / 업데이트하는 방법

분류에서Dev

IIS에서 PHP를 사용하여 MS SQL Server에 데이터를 삽입 할 수 없습니다.

분류에서Dev

PHP를 사용하여 DB에 SQL 삽입-INSERT INTO 문제

분류에서Dev

Oracle 커서를 사용하여 SQL Server에 삽입 할 때 큰 수의 Pyodbc 삽입이 int에서 big으로 변환되지 않음

분류에서Dev

Winform을 사용하여 SQL Server에 이미지를 저장하는 방법은 무엇입니까?

분류에서Dev

Dapper를 사용하여 DbGeography를 SQL Server에 삽입하는 방법

분류에서Dev

SqlClient를 사용하여 SQL Server ID 열에 삽입하는 C # 오류

분류에서Dev

Progressbar를 사용하여 서버에 이미지 삽입

분류에서Dev

Python을 사용하여 Excel DATE (날짜 / 시간 아님) 데이터를 SQL Server에 삽입

분류에서Dev

VB.NET을 사용하여 유니 코드 / 문자 집합 데이터를 SQL Server 2012에 삽입

분류에서Dev

Java를 사용하여 Oracle db에 여러 데이터 삽입

분류에서Dev

pyodbc 및 tkinter를 사용하여 SQL Server에 레코드 삽입 시도

분류에서Dev

EF 5 및 MVC 4를 사용하여 SQL Server에 10 진수 값 삽입

분류에서Dev

쿼리를 사용하여 SQL Server 2008에 5000 개의 레코드 삽입

분류에서Dev

SQL Server에서 DataTable을 사용하여 삽입 또는 업데이트

분류에서Dev

pymssql을 사용하여 SQL Server varbinary (max) 열에 바이트 삽입

분류에서Dev

SQL Server에서 단일 쿼리를 사용하여 여러 테이블에 데이터를 삽입하는 방법은 무엇입니까?

분류에서Dev

업데이트 (존재하지 않는 경우) SQL Server에서 XML 입력 매개 변수를 사용하여 삽입

분류에서Dev

SQL Server : 첫 번째 삽입의 출력을 사용하여 두 번째 테이블에 삽입

분류에서Dev

SQL Server의 테이블에 사용자 지정 날짜를 삽입하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    ASP.NET MVC를 사용하여 Excel 데이터를 SQL Server에 삽입

  2. 2

    JOIN 및 외래 키를 사용하여 SQL Server 테이블에 삽입

  3. 3

    Excel 시트에서 제품의 URL 이미지를 다운로드하여 SQL Server에 이미지로 삽입

  4. 4

    SQL Server에서 XQuery를 사용하여 XML에 요소 삽입

  5. 5

    MS Access를 사용하여 SQL Server에 삽입

  6. 6

    Parameter.Dbtype (저장 프로 시저)을 사용하여 SQL Server 데이터베이스에 이미지 삽입

  7. 7

    SQL 쿼리를 사용하여 DB2에 BLOB 데이터 삽입

  8. 8

    SQL Server 트리거를 사용하여 table_2 (Log)에 데이터를 삽입하는 방법

  9. 9

    PDO를 사용하여 SQL에 파일 이름을 삽입 할 수 없습니다.

  10. 10

    SSIS를 사용하여 MySQL에서 SQL Server로 행을 삽입 / 업데이트하는 방법

  11. 11

    IIS에서 PHP를 사용하여 MS SQL Server에 데이터를 삽입 할 수 없습니다.

  12. 12

    PHP를 사용하여 DB에 SQL 삽입-INSERT INTO 문제

  13. 13

    Oracle 커서를 사용하여 SQL Server에 삽입 할 때 큰 수의 Pyodbc 삽입이 int에서 big으로 변환되지 않음

  14. 14

    Winform을 사용하여 SQL Server에 이미지를 저장하는 방법은 무엇입니까?

  15. 15

    Dapper를 사용하여 DbGeography를 SQL Server에 삽입하는 방법

  16. 16

    SqlClient를 사용하여 SQL Server ID 열에 삽입하는 C # 오류

  17. 17

    Progressbar를 사용하여 서버에 이미지 삽입

  18. 18

    Python을 사용하여 Excel DATE (날짜 / 시간 아님) 데이터를 SQL Server에 삽입

  19. 19

    VB.NET을 사용하여 유니 코드 / 문자 집합 데이터를 SQL Server 2012에 삽입

  20. 20

    Java를 사용하여 Oracle db에 여러 데이터 삽입

  21. 21

    pyodbc 및 tkinter를 사용하여 SQL Server에 레코드 삽입 시도

  22. 22

    EF 5 및 MVC 4를 사용하여 SQL Server에 10 진수 값 삽입

  23. 23

    쿼리를 사용하여 SQL Server 2008에 5000 개의 레코드 삽입

  24. 24

    SQL Server에서 DataTable을 사용하여 삽입 또는 업데이트

  25. 25

    pymssql을 사용하여 SQL Server varbinary (max) 열에 바이트 삽입

  26. 26

    SQL Server에서 단일 쿼리를 사용하여 여러 테이블에 데이터를 삽입하는 방법은 무엇입니까?

  27. 27

    업데이트 (존재하지 않는 경우) SQL Server에서 XML 입력 매개 변수를 사용하여 삽입

  28. 28

    SQL Server : 첫 번째 삽입의 출력을 사용하여 두 번째 테이블에 삽입

  29. 29

    SQL Server의 테이블에 사용자 지정 날짜를 삽입하는 방법은 무엇입니까?

뜨겁다태그

보관