2012-07-18 99 views
0

不能让这个查询工作不能做出的mysql_query工作

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"); 
+0

代码中的'$ SQL = “UPDATE photo_gallery.photograph SET标题= '{$标题}' WHERE photograph.id = '{$ ID}'” 将这个;'告诉我你看到了什么。 – Fluffeh 2012-07-18 09:30:52

+1

回显评估的字符串并查找问题。 – Ali 2012-07-18 09:33:05

+0

尝试检查结果:'if(!mysql_query('your query'))echo mysql_errno()。':'.mysql_error();' – 2012-07-18 09:34:12

回答

0

你有单引号括起来{$ ID} 。如果你的ID是数据库中的提示,那么不应该引用它。

0

在SQL命令中是否有大括号的原因?试试这个来代替:

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

试试这个:

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

还可以使用intval解析INT instread。

0

问题可能来自mysql_real_escape_string。在新版本中,转义是由mysql完成的,而不是由php完成,所以....对我来说,它的工作是这样的。 `然后一个'回声$ SQL;

$caption = $_POST['caption']; 

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