Mysqli_query 返回 false 并且 Mysqli_error 返回 NULL? [复制]

Posted

技术标签:

【中文标题】Mysqli_query 返回 false 并且 Mysqli_error 返回 NULL? [复制]【英文标题】:Mysqli_query returns false and Mysqli_error returns NULL? [duplicate] 【发布时间】:2015-05-09 04:58:03 【问题描述】:

我一直在创建预订系统并创建约会,但我的 SQL 语句不起作用。我一直在努力寻找解决方案,但无济于事。

下面列出的是我的 php 代码。我的第一个 SQL 语句完美运行并返回正确的 ClientID,但是,第二个 SQL 语句并没有将其全部插入数据库。我已经对结果进行了 var_dumps,返回 bool(false),以及对结果进行了 mysqli_error,返回 null。 我最后的错误消息只显示回显消息,而不是 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());
    
?>

【问题讨论】:

【参考方案1】:
$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();
  

【讨论】:

谢谢你!我发现问题在于“第 1 行 1366 的列 'Length' 的整数值不正确:''”(1366 是错误号)。我不确定如何解决这个问题,因为我上次遇到这个问题,这是由于 ClientID,但通过从 mysql 更改为 mysqli 来解决。

以上是关于Mysqli_query 返回 false 并且 Mysqli_error 返回 NULL? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

mysqli_query(“set nams utf8”)为FALSE

PHP小知识总结

mysqli_query 返回 0 行(奇怪的行为)

执行 mysqli_query 有效,但它不返回 WHERE CLAUSE 中给出的确切行

mysql怎么删除一个表

php问题,搞了好几天,$result=mysqli_query($link,$sql); $result的值一直返回假,求帮助,快要疯掉了