2011-12-21 58 views
0

我不知道我在做什麼錯,但我的小更新代碼給了我一個錯誤消息,我無法解決如何解決它。不能更新MySQL表

這裏是我的代碼:

<?php 

    include('dbconfig.php'); 
    $con = mysql_connect($host, $username, $password) or die(mysql_error()) ; 

    if (!$con){ 
     die('Could not connect: ' . mysql_error()); 
     } 
     mysql_select_db($db, $con); 

     function sqlEscape($string){  
      return "'".mysql_real_escape_string($string)."'"; 
     } 

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


    $q = "UPDATE records SET `name` = " + sqlEscape($_POST['name']) + ", 
    `age` = " + sqlEscape($_POST['age']) + ", 
    `location` = " + sqlEscape($_POST['location']) + ", 
    `telephone` = " + sqlEscape($_POST['telephone']) + " 

    WHERE id = $_POST[id]";     

    mysql_query($q) or die(mysql_error()); 

    }     
    ?> 

這是它打印出錯誤消息:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0' at line 1 

有人可以看到我要去哪裏錯了呢?

感謝您的幫助。

+0

回聲你'$ q'變量和後的結果。乍一看,它看起來像你的值需要單引號('name = whatever'需要是'name ='whatever'')。 – 2011-12-21 22:57:49

+0

@LoganSerman他的sqlEscape函數負責這個 – 2011-12-21 23:00:30

+0

良好的調用,我跳過了該函數的主體。然後,發佈回顯'$ q'的結果。 – 2011-12-21 23:01:28

回答

3
$q = "UPDATE records SET `name` = " . sqlEscape($_POST['name']) . ", 
    `age` = " . sqlEscape($_POST['age']) . ", 
    `location` = " . sqlEscape($_POST['location']) . ", 
    `telephone` = " . sqlEscape($_POST['telephone']) . " 

    WHERE id = $_POST[id]"; 

使用「。」而不是「+」來連接PHP中的字符串。

+0

謝謝,讓我試試你的建議,看看是否有幫助。 – 2011-12-21 23:18:14

4

您正在將字符串與用於添加數字的+運算符一起添加。在PHP中,字符串與.(句點)運算符連接。

$q = "UPDATE records SET `name` = " . sqlEscape(...) . ", 

+0

謝謝,我將刪除+,看看它是否有任何區別。 – 2011-12-21 23:18:50