2012-07-18 92 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."' ");