2011-12-21 60 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