0
私は、mysqlデータベースのデータとブロブ(imgやpdf)に挿入するphpコードを持っています。sql server insert data file_get_contents php
私はSQL Serverのテーブルにデータを挿入するためのコードを実行しようとすると、SQL Serverが私にこのエラーを示して、SQL Serverにデータベースをmirgateする必要があります。
SQLSTATE[42000]: [Microsoft][SQL Server Native Client 10.0][SQL Server]No se permite la conversion implicita del tipo de datos nvarchar(max) a varbinary(max). Utilice la funcion CONVERT para ejecutar esta consulta.
コードは以下の通りである。
$destino = addslashes(file_get_contents($value['tmp_name']));
$tmpName = $value['tmp_name'];
// Read the file
$fp = fopen($tmpName, 'r');
$data = fread($fp, filesize($tmpName));
$destino = ($data);
fclose($fp);
$tamano = $value['size'];
$tipo = $value['type'];
$name = $value['name];
$sql="INSERT INTO documentacion
(nombre, archivo,extension)
VALUES
(:nombre, :archivo, :extension)";
$valores = array(
':nombre' =>$name,
':archivo' =>utf8_encode($destino),
':extension' =>$tipo,
);
try{
$ejec=$bd->ejecuta($sql,$valores);
}
catch (PDOException $e) {
echo 'Error BD al insertar documentacion: ' . $e->getMessage();
}
return $ejec[0];
誰かがnvarchar(max)をvarbinary(max)に変換する方法を教えてください。
おかげ
感謝すべきだと思いますが、どのように私は、ウェブサイトのページ内のブロブを表示することができます。 Mysqlには次のものがあります: 'header(" Content-type:{$ doc-> extension} "); echo($ doc-> archivo); '($ doc-> archivo)はSQL SELECTクエリで受け取った値です。私はSqlサーバーで実行するために私のコードの何かを変更する必要がありますか?ありがとうございました – bcg
'varbinary'カラムを' select .. cast(archiv as varchar(max)as archivo')で 'varchar'に変換し、前の初期ファイルの内容に適用した変換(もしあれば)これを 'insert 'のパラメータとして渡します。 – Serg
挿入物の配列値は '$ valores = array( ':nombre' => $ name、 ':archivo' => utf8_encode($ destino)、 ':extension' => $ tipo、 )です。 '変換を進めてimg/pdfを表示すると' utf8_decode($ doc-> archivo) 'になります。私はあなたをよく理解しているとは確信していません、私はこれを行い、ウェブページは私にimg/pdfのない白いページを返します。私は何が間違っているのかわからないが、mysqlは正常に動作した。応答ありがとう – bcg