2012-09-30 121 views
3

我正在使用php来更新函数中的一个mysql数据库。我能够回显我的变量名称,并能够返回php页面上的变量。这证明我的变量正常工作。PHP - 使用变量更新

现在,当我使用更新命令,我的数据库不响应。是的,我已连接到数据库,它都可以工作。

这是我在用的更新:

mysql_query("UPDATE `table_name` 
      SET `int_field` = '$int_value' 
      WHERE `username` = $username"); 
+1

更新查询后正确的结构,你应该检查的结果,从错误,你会很容易找到的错误部分。对于你的情况,你错过了'$ username'的引号。 – xdazz

+0

将字符串分隔符从int转换为字符串,可能是?mysql_query(“UPDATE table_name SET int_field = $ int_value WHERE username ='$ username'”); – enhzflep

+1

@enhzflep mysql会自动转换它。 –

回答

3

$username值应与single quotes进行包裹。

mysql_query(" UPDATE table_name 
       SET int_field = '$int_value' 
       WHERE username = '$username'"); 

请注意:您的代码容易受到SQL Injection的影响。请阅读下面的文章就知道如何保护您的代码,

Best way to prevent SQL injection in PHP?

+0

谢谢,这已经使用$用户名引号。并感谢您的SQL注入链接。我也在所有的字段变量上使用了一个sanitize函数。 –

+0

@SlapShot欢迎您:D和欢迎来到StackOverFlow社区! –

0

试试这个:

  mysql_query("UPDATE `table_name` 
     SET `int_field` = '$int_value' 
     WHERE `username` = '$username'"); 
1

你需要将所有输入的报价来查询。这样可以防止SQL注入,但也会出现简单的语法错误,如果用户无意中输入了会破坏查询的特殊字符,就会发生这种错误。

mysql_query('UPDATE table_name '. 
      'SET int_field = "'.mysql_real_escape_string($int_value).'" '. 
      'WHERE username = "'.mysql_real_escape_string($username).'"'); 
0

我有同样的问题,发现设定值并不需要使用单引号和WHERE子句不...

mysql_query("UPDATE table_name SET int_field=$int_value 
WHERE username='$username'"); 

..似乎为我工作。

1

这是如何与一个变量在PHP

mysql_query("UPDATE tablename SET password='". $NPass ."' WHERE custID='$num'");