0

无法使此查询工作

if (isset($_GET['id'])){
  $id = $_GET['id'];

  if(isset($_POST['submit'])) {

    $id = (int)$id;
    $caption = mysql_real_escape_string($_POST['caption']);

    mysql_query(" UPDATE  `photo_gallery`.`photograph` SET  `caption` ='{$caption}' WHERE  `photograph`.`id` ='{$id}' ");

但是当我手动将其更改为此时,它可以工作

mysql_query("UPDATE  `photo_gallery`.`photograph` SET  `caption` =  'bruv' WHERE  `photograph`.`id` =3");
4

4 回答 4

0

{$id} 周围有单引号。如果您的 id 是数据库中的提示,则不应引用它。

于 2012-07-18T09:34:54.343 回答
0

尝试这个:

mysql_query(" UPDATE  `photo_gallery`.`photograph` SET  `caption` ='".$caption."' WHERE  `photograph`.`id` = '".$id."' ");

也用于intval解析 int instread。

于 2012-07-18T09:40:37.770 回答
0

问题可能来自mysql_real_escape_string。在新版本中,转义是由 mysql 而不是由 php 完成的,所以....对我来说它是这样工作的。

$caption = $_POST['caption'];

mysql_query(" UPDATE  `photo_gallery`.`photograph` SET  `caption` ='".mysql_real_escape_string($caption)."' WHERE  `photograph`.`id` ='".$id."' ");
于 2012-07-18T12:51:37.937 回答
0

您的 SQL 命令中的花括号是否有原因?试试这个:

mysql_query(" UPDATE  `photo_gallery`.`photograph` SET  `caption` ='$caption' WHERE  `photograph`.`id` ='$id' ");
于 2012-07-18T09:37:23.167 回答