mysql查询where条件在int上但不在string上

时间:2012-12-18 20:52:33

标签: php mysql sql

查询

$sql = "update students set status = 'active', student_password='{$password}' where student_id ='".$_GET['id']."'";

将结果显示为

update students set status = 'active', student_password='50d0d53f546b7' where student_id ='112s23dd'

错误来了

Unknown column '112s23dd' in 'where clause'

当我在where子句中放入任何int值时,它工作正常,但不能在charecter中工作 student_id是主键varchar(30)
还有一件奇怪的事情,当我将它粘贴在那里时,我正在使用phpmyadmin,但是当我在网页上执行此操作时无法正常工作

3 个答案:

答案 0 :(得分:1)

看起来你找到了一个Bug:

http://www.sqlfiddle.com/#!2/56e3e/1

如果您可以尝试直接将代码运行到PHPMyAdmin中,只是为了测试它会更好。

也为我们提供了Mysql的版本。

答案 1 :(得分:1)

我已根据您提供的数据制作了fiddle。您的查询工作得很好。我认为问题可能在于您没有在网站上更新数据库或在此期间更改了列'student_id'的类型。请仔细检查服务器上的数据库。

答案 2 :(得分:0)

试试这个:

    mysql_query("update `students` set `status`='active', `student_password`='{$password}' where `student_id`='" . mysql_real_escape_string($_GET['id']) . "'") or die(mysql_error());

通过使用它,您将获得此查询未执行的原因。