从表单把图片提交到服务器后(省略了判断上传文件格式等语句)
/定义上传后的位置和新文件名
    $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)!!!非常感谢

解决方案 »

  1.   

    $sqladd .= "values('{$title}','{$data}'),'{$pubtime}'";
    $sqladd .= "values('{$title}','{$data}','{$pubtime}')";//这个括号,至少要改
      

  2.   

    本帖最后由 xuzuning 于 2011-08-31 16:24:47 编辑
      

  3.   

    感谢xuzuning,PhpNewnew的帮助。但二位说的把图片路径存储在数据库中我也试过,但还是报相同的错误。
    不知道是不是我写的哪里有问题,请指正:
    $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();
    }
      

  4.   

    //向数据库中的pictures表Insert数据
    $sqladd = "insert into pictures (title,photo,pubtime)";
    $sqladd .= "values('{$title}','{$data}'),'{$pubtime}'";//这里先改了,看看还有没有报错$sqladd .= "values('{$title}','{$data}','{$pubtime}')";
      

  5.   

    有括弧的问题已经改了,谢谢!
    如果只存title,path,pubtime都没有问题。要是存图片也可以,但必须是,xxx/xxx/xx.jpg这种格式的图片存入数据库才不会报错。如果用$photofile = $up_dir.$_FILES["photofile"]["name"]; $fp = fopen($photofile,"rb"); $data = fread($fp,filesize($photofile));这种,将$data 存入数据库就汇报1064错误。
      

  6.   

    错误信息如下:
    添加失败.错误号: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
      

  7.   

    语法错误。
    $sqladd .= "values('{$title}','{$data}','{$photofile}','{$pubtime}')";
    这行下面加上:echo $sqladd;   贴出结果来。
      

  8.   

    insert into photos (title,photo,path,pubtime)values('new_balance','0xffd8ffe000104a46494600010100000100010000fffe003b43524541544f523a2067642d6a7065672076312e3020287573696e6720494a4注:$data = bin2hex(fread($fp,filesize($photofile)));
          $sqladd = "insert into photos (title,photo,path,pubtime)";
    $sqladd .= "values('{$title}','0x{$data}',{$photofile}','{$pubtime}')";
      

  9.   

    感谢iamani11,xuzuning,PhpNewnew的帮助。最后我还是改为只在数据库中存储路径了。多谢大家的帮助。我会尽快提高自己,今后也会尽力帮助我可以帮助的朋友!