查询工作在MySQL,但我得到'查询是空的'在PHP中


Query works in MySQL but I get 'Query was empty' in PHP

下面的代码是一个简单密码管理器的一部分。我得到一个错误说查询是空的,但查询在MySQL中工作得很好。(1和测试值最初是变量,我只是将它们更改为值,作为故障排除的一部分)。我也知道列名user和password可能有问题,但我在它们周围添加了'。这个代码还有什么问题呢?

$change_pass_query = "UPDATE `user` SET `password` = PASSWORD('test') WHERE id = 1";
$change_pass_result = mysql_query($change_pass_query) or die('Error. Change Password Query failed: '. mysql_error());

试着这样格式化你的SQL:

UPDATE `user` SET `password` = 'test' WHERE `id` = 1

http://php.net/manual/en/function.mysql-query.php

请注意该页顶部的警告。没有人使用mysql_query或任何普通的mysql函数。研究mysqli/mysqli_query和PDO。

下面是如何使用PDO的:

$pdo = new PDO("mysql:host=localhost;dbname=mydb","username","password");
$stmt = $pdo->prepare("UPDATE `user` SET `password` = PASSWORD(:password) WHERE id = :id");
$result = $stmt->execute(array(':password' => "test",':id' => 1));
if (!$result) die('Error. Change Password Query failed: '. mysql_error());

这里有一些关于PDO的文档:http://php.net/manual/en/book.pdo.php

我最终重命名了所有的表和字段,所以我没有使用任何保留字,因为我认为问题可能是这样的。问题还是发生了。然后我将代码复制到另一个PHP框中,瞧,代码工作得很好。我将不得不把它归结为旧机器上PHP版本/安装的问题,然后继续前进。代码没有问题