【发布时间】:2017-09-11 22:38:35
【问题描述】:
我有一个应该返回数据库查询的 PHP 函数:
function editprojectform(){
global $conn;
if(isset($_POST['project_id'])){
$project_id = $_POST['project_id'];
$sql = "SELECT * FROM projects WHERE Project_ID=".$project_id;
if ($conn->query($sql) === TRUE) {
echo "It works";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
}
但是它打印出错误而不是打印出项目名称:
错误:SELECT * FROM projects WHERE Project_ID=3
我可以将这个确切的查询复制并粘贴到 PHPadmin 中,它会返回预期的结果。我想弄清楚为什么它在这里不起作用?我有一个非常相似的删除记录的功能,它工作正常。
谢谢。
【问题讨论】:
-
Project_ID 是哪种数据类型?
-
很可能您将 id 作为字符串传递。因此,尝试将您的查询更改为:
$sql = "SELECT * FROM projects WHERE Project_ID='".$project_id."'";将字符串包装成单引号。 -
这是因为它没有作为字符串传递,奇怪的是我在一个函数中有一个查询,它没有将它作为一个有效的字符串传递
"DELETE FROM projects WHERE Project_ID=".$project_id;... -
您可以通过尝试普通查询
$sql = "SELECT * FROM projects WHERE Project_ID=3";来验证它是否有效。如果可行,您可以确定 $project_id 是一个字符串。设置 $project_id 时,您也可以将值转换为 INT:$project_id = (int)$_POST['project_id'];