从表单把图片提交到服务器后(省略了判断上传文件格式等语句)
/定义上传后的位置和新文件名
$up_dir = "./photos/";copy($_FILES["photofile"]["tmp_name"],$up_dir.$_FILES["photofile"]["name"]);$photofile = $up_dir.$_FILES["photofile"]["name"];(到这一步都正常,指定文件中有上传的图片)
//读入图片内容
$fp = fopen($photofile,"r");
$data = fread($fp,filesize($photofile));
//读取表单提交的内容及相对应的日期
$title = $_POST["phototitle"];
$pubtime = date("Y-m-d H:i:s");//向数据库中的pictures表Insert数据
$sqladd = "insert into pictures (title,photo,pubtime)";
$sqladd .= "values('{$title}','{$data}'),'{$pubtime}'";if(mysql_query($sqladd))
{
$id = mysql_inser_id();
echo $id.'添加成功';
}
else
{
echo '添加失败.错误号:'.mysql_errno().'错误原因:'.mysql_error();
}
然后,页面报错:添加失败.错误号:1064错误原因:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2011-08-31 15:35:33'' at line 1请教各位是什么原因该如何解决。我自己猜测是在$data出的问题,是不是fread()读取后数据格式与MySQL的不相符??(photo的属性类型是longBlob)!!!非常感谢
/定义上传后的位置和新文件名
$up_dir = "./photos/";copy($_FILES["photofile"]["tmp_name"],$up_dir.$_FILES["photofile"]["name"]);$photofile = $up_dir.$_FILES["photofile"]["name"];(到这一步都正常,指定文件中有上传的图片)
//读入图片内容
$fp = fopen($photofile,"r");
$data = fread($fp,filesize($photofile));
//读取表单提交的内容及相对应的日期
$title = $_POST["phototitle"];
$pubtime = date("Y-m-d H:i:s");//向数据库中的pictures表Insert数据
$sqladd = "insert into pictures (title,photo,pubtime)";
$sqladd .= "values('{$title}','{$data}'),'{$pubtime}'";if(mysql_query($sqladd))
{
$id = mysql_inser_id();
echo $id.'添加成功';
}
else
{
echo '添加失败.错误号:'.mysql_errno().'错误原因:'.mysql_error();
}
然后,页面报错:添加失败.错误号:1064错误原因:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2011-08-31 15:35:33'' at line 1请教各位是什么原因该如何解决。我自己猜测是在$data出的问题,是不是fread()读取后数据格式与MySQL的不相符??(photo的属性类型是longBlob)!!!非常感谢
$sqladd .= "values('{$title}','{$data}','{$pubtime}')";//这个括号,至少要改
不知道是不是我写的哪里有问题,请指正:
$photofile = $up_dir.$_FILES["photofile"]["name"];
//读入图片内容
$fp = fopen($photofile,"rb");
$data = fread($fp,filesize($photofile));$sqladd = "insert into pictures (title,photo,photo_dir,pubtime)";
$sqladd .= "values('{$title}','{$data}','{$photofile}','{$pubtime}')";if(mysql_query($sqladd))
{
$id = mysql_insert_id();
echo $id.'添加成功';
}
else
{
echo '添加失败.错误号:'.mysql_errno().'错误原因:'.mysql_error();
}
$sqladd = "insert into pictures (title,photo,pubtime)";
$sqladd .= "values('{$title}','{$data}'),'{$pubtime}'";//这里先改了,看看还有没有报错$sqladd .= "values('{$title}','{$data}','{$pubtime}')";
如果只存title,path,pubtime都没有问题。要是存图片也可以,但必须是,xxx/xxx/xx.jpg这种格式的图片存入数据库才不会报错。如果用$photofile = $up_dir.$_FILES["photofile"]["name"]; $fp = fopen($photofile,"rb"); $data = fread($fp,filesize($photofile));这种,将$data 存入数据库就汇报1064错误。
添加失败.错误号:1064错误原因:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/photos/new_1.jpg','2011-08-31 18:19:33')' at line 1
$sqladd .= "values('{$title}','{$data}','{$photofile}','{$pubtime}')";
这行下面加上:echo $sqladd; 贴出结果来。
$sqladd = "insert into photos (title,photo,path,pubtime)";
$sqladd .= "values('{$title}','0x{$data}',{$photofile}','{$pubtime}')";