CREATE PROCEDURE sp_table1 @pics image
AS
...
再用
mssql_bind($stmt, "@pics", $EmpPhoto, SQLVARCHAR, true);
mssql_execute($stmt, false);
试一试
AS
...
再用
mssql_bind($stmt, "@pics", $EmpPhoto, SQLVARCHAR, true);
mssql_execute($stmt, false);
试一试
if ($_FILES["FileUpload1"] != null) { $db = mssql_connect("127.0.0.1", "sa", "liuyang");
mssql_select_db("test", $db); // storing a file
$filename = $_FILES["FileUpload1"]["name"];
//$datastring = file_get_contents($_FILES["FileUpload1"]["tmp_name"]);
$datastring = implode('', file ($_FILES["FileUpload1"]["tmp_name"]));
$data = unpack("H*hex", $datastring);
$EmpPhoto = "0x".$data['hex']; mssql_query("INSERT INTO Table1(pics) VALUES(".$EmpPhoto.")");
mssql_close($db); print("图片插入成功!<br>\n");
exit(); /*
// 读取查看
$result = mssql_query("select pics from Table1 where id=1");
$row = mssql_fetch_assoc($result);
header("Content-type: image/bmp;");
echo $row['pics'];
*/
}
?>这段代码可以正常插入和读取显示了。
$datastring=implode('',file($_FILES["FileUpload1"]["tmp_name"]));
$dat=unpack("H*hex",$datastring);
$EmpPhoto="0x".$data['hex'];
这三句吗?
我认为关键是读取图片内容数据转换的问题,如果不这样转用mssql_query执行sql语句会报错
呵呵 Mark :)
但不是不明白就算用
$datastring=implode('',file($_FILES["FileUpload1"]["tmp_name"]));
$dat=unpack("H*hex",$datastring);
$EmpPhoto="0x".$data['hex'];
转换了数据,在去调用存储过程还是会出错哦。
查查fread 和file函数的区别
二进制文件要用字节涵数和数组,
在操作二进制文件时如果没有指定 'b' 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 \r\n 字符的奇怪问题。 注: 为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 'b' 标记。