2016-11-02 4 views
2

アップロードされたファイルをPHPでデータベースに保存(挿入)したいのですが、データベースの種類はvarbinaryです。
最後に、ファイルがC#で読み込まれた後、バイト配列に格納され、配列がVarBinaryに挿入されたときのように、VarBinary(出力)の内容を保持したいとします。
また、私のデータベースへの接続はsqlsrvです。
私のファイルのタイプは、ただPDFと画像です。
私はこのコードを試してみたが、私の出力は、C#の出力と異なっている:
ファイルの内容をPHPでバイト配列に変換する方法

[email protected]($_FILES["my_file"]["tmp_name"], 'rb'); 
$content= file_get_contents($_FILES["my_file"]["tmp_name"]); 
$content = unpack("N*",$content); 
$content= implode($content); 
$sql = "INSERT INTO files (file_data) VALUES (CONVERT(varbinary(MAX)?)"; 
$params=array(); 
array_push($params,$content); 
$table=sqlsrv_query($conn, $sql, $params); 

「$ connが、」正常に動作し、私の接続の名前です。

+2

なぜこれがありますタグ付きのC#? – Botonomous

+0

@Botonomous私はC#の出力のような出力をしたいので。 –

+0

彼がやっていることはPHP#だと思いますか? – Lidaranis

答えて

1

PHPには「バイト配列」データ型がありません。どの文字列型が文字列型で、であり、すべての目的と目的のためのバイト配列です。 、あなたがPHPで取得しますとバイト配列に近くなる変数にファイルのバイナリコンテンツを読むためには:

$content = file_get_contents($_FILES['my_file']['tmp_name']); 

うん、それはそれです。何もする必要はありません。

私はSQLSRVのAPIを持つ特定慣れていないんだけど、its documentationを熟読することは、それはあなたが(する必要がありますか?)できるバイナリであるとして、このようフラグにデータをフラグを設定することが表示されます:

sqlsrv_query($conn, 'INSERT INTO files (file_data) VALUES (?)', array(
    array($content, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING, SQLSRV_SQLTYPE_BINARY) 
)); 
関連する問題