Mysqli_query returns false 和 Mysqli_error returns NULL?
Mysqli_query returns false and Mysqli_error returns NULL?
我一直在创建预订系统和约会,但我的 SQL 语句不起作用。我一直在努力寻找解决方案,但无济于事。
下面列出的是我的 php 代码。我的第一个 SQL 语句工作得很好并且 returns 正确的 ClientID,但是,第二个 SQL 语句没有将它全部插入到数据库中。我对结果做了 var_dumps,返回 bool(false),对结果做了 mysqli_error,返回 null。
我最后的错误消息只显示回显消息,而不是 mysqli_error 或错误号。
(注:为了保护数据,部分值为changed/removed)
<?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).
我读过的文档说要用查询的 "link" 初始化一个变量。你这样做了:
$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();
}
我一直在创建预订系统和约会,但我的 SQL 语句不起作用。我一直在努力寻找解决方案,但无济于事。
下面列出的是我的 php 代码。我的第一个 SQL 语句工作得很好并且 returns 正确的 ClientID,但是,第二个 SQL 语句没有将它全部插入到数据库中。我对结果做了 var_dumps,返回 bool(false),对结果做了 mysqli_error,返回 null。 我最后的错误消息只显示回显消息,而不是 mysqli_error 或错误号。
(注:为了保护数据,部分值为changed/removed)
<?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).
我读过的文档说要用查询的 "link" 初始化一个变量。你这样做了:
$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();
}