簡體   English   中英

為什么我在PHP中的SQL查詢失敗?

[英]Why is my SQL query in PHP failing?

我有一個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中,並返回預期的結果。 我試圖弄清楚為什么它在這里不起作用? 我有一個非常相似的功能,可以刪除一條記錄,並且工作正常。

謝謝。

我假設您正在使用mysqli :: query 如果您閱讀文檔,特別是返回值部分,則說明

失敗時返回FALSE。 對於成功的SELECT,SHOW,DESCRIBE或EXPLAIN查詢,mysqli_query()將返回mysqli_result對象。 對於其他成功的查詢,mysqli_query()將返回TRUE。

因此,由於您使用的是SELECT語句,因此該函數將返回FALSE或兩個都不 相同=== )的對象為TRUE。 因此,它將始終失敗。

與SELECT語句不同,如果使用DELETE語句,則該函數將僅返回TRUE或FALSE。 因此,根據您所擁有的語句類型,該函數將返回不同的值。

只需按照文檔中的示例進行操作,然后將if語句替換為if ($result = $conn->query($sql)) {

在這種情況下,最好使用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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM