我有一个应该返回数据库查询的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项目WHERE Project_ID = 3
我可以将这个确切的查询复制并粘贴到PHPadmin中,并返回预期的结果。我想弄清楚为什么它不在这里工作?我有一个非常类似的功能删除记录,它工作正常。
感谢-你。
答案 0 :(得分:3)
我假设你正在使用mysqli::query。如果您阅读文档,特别是return values部分,则说明
失败时返回FALSE。成功的SELECT,SHOW,DESCRIBE或 EXPLAIN查询mysqli_query()将返回一个mysqli_result对象。对于 其他成功的查询mysqli_query()将返回TRUE。
因此,由于您使用的是SELECT语句,因此该函数将返回FALSE或不 identical(===
)的对象为TRUE。所以,它总会失败。
与SELECT语句不同,如果使用DELETE语句,该函数将仅返回TRUE或FALSE。因此,根据您拥有的语句类型,该函数将返回不同的值。
只需按照文档中的示例操作,并将您的IF语句替换为if ($result = $conn->query($sql)) {
。
答案 1 :(得分:1)
在这种情况下,最好使用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)