为什么我在PHP中的SQL查询失败?
我有一个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中,并返回预期的结果。 我正试图弄清楚为什么它不在这里工作? 我有一个非常相似的功能,删除一条记录,它工作正常。
谢谢。
我假设你正在使用mysqli :: query。 如果你阅读文档,特别是返回值部分,它说
失败时返回FALSE。 对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,mysqli_query()将返回一个mysqli_result对象。 对于其他成功的查询,mysqli_query()将返回TRUE。
因此,由于您使用的是SELECT语句,函数将返回FALSE或两个不相同的对象( ===
)为TRUE。 所以,它总是会失败。
与SELECT语句不同,如果使用DELETE语句,该函数将只返回TRUE或FALSE。 因此,根据您拥有的声明类型,函数将返回不同的值。
只需按照文档中的示例,用if ($result = $conn->query($sql)) {
替换IF语句。
在这种情况下,最好使用PDO。
$db = $pdo->prepare('SELECT FROM projects WHERE Project_ID=:Project_ID');
$db->bindParam(':Project_ID', $project_id);
$db->execute();
$res = $db->fetchAll();
var_dump($res)
链接地址: http://www.djcxy.com/p/58605.html