簡體   English   中英

Mysqli_query返回false,而Mysqli_error返回NULL?

[英]Mysqli_query returns false and Mysqli_error returns NULL?

我一直在創建預訂系統並創建約會,但是我的SQL語句不起作用。 我一直在尋找解決方案,但無濟於事。

下面列出的是我的PHP代碼。 我的第一個SQL語句可以正常工作並返回正確的ClientID,但是,第二個SQL語句並未將其全部插入數據庫中。 我對結果做了var_dumps,返回bool(false),對結果做了mysqli_error,返回null。 我的錯誤消息最后僅顯示echo'd消息,也沒有mysqli_error或錯誤號。

(注意:為了保護數據,某些值已更改/刪除)

<?php
    session_start();
    if(! $_SESSION['Username']) {
        header("location:Index.php");
    }    
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "";
    $tablename = "appointmentinformation";
    $tablenamed = "clientinformation";

    $connection = mysqli_connect("$servername", "$username", "$password", "$dbname") or die("Could not connect to the database");

    $clientusername = $_SESSION['Username'];
    $sql = "SELECT ClientID FROM $tablenamed WHERE Username = '$clientusername' LIMIT 1";
    $results = mysqli_query($connection, $sql);
    if (! $results) {
        echo ("Could not select the data : " . mysql_error());
    } else {
        $datarows = mysqli_fetch_row($results);
        $clientid = $datarows[0];
    }

    $date = $_POST["Date"];
    $month = $_POST["Month"];
    $year = $_POST["Year"];
    $time = $_POST["Time"];
    $length = $_POST["Length"];

    $date = stripslashes($date);
    $month = stripslashes($month);
    $year = stripslashes($year);
    $time = stripslashes($time);
    $length = stripslashes($length);

    $date = mysqli_real_escape_string($date);
    $month = mysqli_real_escape_string($month);
    $year = mysqli_real_escape_string($year);
    $time = mysqli_real_escape_string($time);
    $length = mysqli_real_escape_string($length);

    $query = "INSERT INTO appointmentinformation (ClientID, Length, Date, Month, Year, Time, Price) VALUES ('$clientid', '$length', '$date', '$month', '$year', '$time', '$price')";
    $result = mysqli_query($connection, $query);
    if ($result) {
        header("Location:UserCP.php");
    } else {
        echo ("Could not insert data : " . mysqli_error($result) . " " . mysqli_errno());
    }
?>
$query = "INSERT INTO appointmentinformation (ClientID, Length, Date, Month, Year, Time, Price) VALUES ('$clientid', '$length', '$date', '$month', '$year', '$time', '$price')";
    $result = mysqli_query($connection, $query);
    if ($result) {
        header("Location:UserCP.php");
    } else {
        echo ("Could not insert data : " . mysqli_error($result) . " " . mysqli_errno());
    }

mysqli_query返回的結果為空。 這會將您發送到代碼的else分支。 然后,您編碼了mysqli_error($ result)等於mysqli_error(null)。

我讀過的文檔說要使用與查詢的“鏈接”初始化變量。 您這樣做的原因是:

 $connection = mysqli_connect("$servername", "$username", "$password", "$dbname") or die("Could not connect to the database");

現在,您要將其編碼為mysqli_error($ connection)和mysqli_errno($ connection)。

另一個建議。 在mysqli_connect語句之后立即添加此代碼。

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

暫無
暫無

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

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