2012-04-11 39 views
0

我希望所有用戶都能夠更新他們的關於頁面。這裏是我在我的php中用來查詢MySQL更新的字符串。我收到一個錯誤。我究竟做錯了什麼?使用MySQL更新一行數據

$insert_query= "UPDATE user_info SET bio= $bio_ans, residence= $residence_ans, work= 
$work_ans WHERE user_id= $user_id"; 
mysqli_query($connect, $insert_query) 
    or die('error with query1'); 

回答

2

如果更新值不是整數,那麼您需要圍繞該值使用引號。

$insert_query= "UPDATE user_info 
        SET bio= '$bio_ans', 
        residence= '$residence_ans', 
        work = '$work_ans' WHERE user_id= '$user_id'"; 
mysqli_query($connect, $insert_query) 
or die('error with query1'); 
+0

這將只是插入字符串$ bio_ans等我認爲,而我認爲用戶是通過連接將變量的ht evalue – 2012-04-11 22:17:14

+2

@PaulSullivan:不,單引號被PHP忽略,因爲他們是在雙引號。整個字符串是雙引號字符,因此會發生可變插值。報價不會嵌套。 – Javier 2012-04-11 22:20:54

+0

我糾正 - im c#'er – 2012-04-11 22:21:42

0
$insert_query= "UPDATE user_info SET bio= $bio_ans, residence= $residence_ans, work=$work_ans WHERE user_id= $user_id"; 
mysqli_query($connect, $insert_query) 
    or die('error: $mysqli->error'); 

$mysqli->error會讓你知道具體是什麼地方出了錯。

0

$ insert_query = 「UPDATE USER_INFO SET生物='」。 $ bio_ans。 「',residence ='」。 $ residence_ans。「',work =
'」。$ work_ans。「'WHERE user_id ='$ user_id'」; mysqli_query($ connect,$ insert_query) 或die('error with query1');

+0

請注意,這種類型的字符串串聯是可怕的不安全,你應該調用參數化程序 – 2012-04-11 22:19:20

0

除了沒有引號(如RPM所示),你所做的真正錯誤的事情是使用變量插值創建SQL查詢。

這僅僅是數值變量可以接受的,而且只有你強迫它只是在使用前轉換爲數值型。字符串轉義應該是安全的,但非常容易出錯(做兩次,忘記添加新值等時添加)。最輕微的滑動將爲SQL注入打開一個巨大的漏洞,這是破解Web應用程序的絕對最簡單的方法。

使用帶有參數綁定的預處理語句,您將會很安全。