根据这个question我成功创建了上传图片,但现在我需要将image_id
存储到另一个名为articles
的表中。我不知道这是否正确,但我试图从像这样的表格图像中选择image_id
$select_image=mysql_query("select image_id from image where image_name = $fileName") or die(mysql_error());
并将结果提取到我的文章插入查询中,如此
$fetch=mysql_fetch_array($select_image);
$query=mysql_query("insert into articles (article_name,article_category,article_subcategory,article_body,article_summary,article_tags,article_photo,article_timedate) values ('$article_title','$CategoryID','$ProductID','$article_body','$article_summary','$fetch[image_id]','$time')") or die ('Error, Query Faild'.mysql_error());
这是对的吗? mysql_error一直在说
'where子句'中的未知栏'Penguins.jpg'
答案 0 :(得分:3)
这是与mysql语法相关的问题。
直接进入查询的所有数据必须使用2条规则准备:
1.必须使用mysql_real_escape_string()函数转义数据
2.用引号括起来
所以,代码必须是
$fileName=mysql_real_escape_string($fileName);
$select_image=mysql_query("select image_id from image where image_name = '$fileName'") or die(mysql_error());
此外,如果您在此查询之前插入图像,则无需选择其ID。您可以使用mysql_insert_id()
功能
答案 1 :(得分:2)
问题是您的文件名未被引用,因此您的MySQL服务器正在尝试处理查询:
select image_id from image where image_name = Penguins.jpg
更糟糕的是有人上传了一个名为
的文件1; EVIL MYSQL QUERY HERE
他们可以在您的服务器上执行任意MySQL。这称为SQL注入攻击。
查看涵盖此内容的PHP manual page。
答案 2 :(得分:1)
您可以通过调用
选择最后插入的IDSELECT LAST_INSERT_ID()
而不是
select image_id from image where image_name = $fileName
答案 3 :(得分:0)
您需要在第一个查询中将$fileName
放在引号中,即'$fileName'