为什么我在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

上一篇: Why is my SQL query in PHP failing?

下一篇: Recursive functions and multidimensional arrays