在我的代码中,有两种不同的查询。第一个是工作 - 我的意思是它进入if
路径。问题出在通往else
路径的第二个。
$adding_user_email=$arr[1];
$sessionuserid=$_SESSION['login_user_id'];
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "company";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO modes (userid,modename) VALUES ('$sessionuserid','".$arr[0]."')";
$sqlmodeid_uderid = "SELECT userid FROM register where useremail='".$arr[1]."'";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$sqlmodeid_uderid = "SELECT userid FROM register where useremail='$adding_user_email'";
if ($conn->query($sqlmodeid_uderid) === TRUE) {
echo "userid fetched successfully";
} else {
echo "Error: " . $sqlmodeid_uderid . "<br>" . $conn->error;
}
$conn->close();
帮帮我。(查询工作正常)
条件是有问题的:
$conn->query($sqlmodeid_uderid) === TRUE
如果我们查阅query
函数的文档,我们将看到:
失败时返回 FALSE。成功选择、显示、描述或 EXPLAIN 查询 mysqli_query() 将返回一个mysqli_result对象。为 其他成功的查询 mysqli_query() 将返回 TRUE。
当您处理SELECT
查询时,此调用将永远不会返回true
。它将在成功时返回一个mysqli_result
对象,在失败时返回false
对象。
相反,您可以通过多种方式重写此条件。
检查查询是否返回
false
。if ($conn->query($sqlmodeid_uderid) !== FALSE) {
使用
==
而不是===
。第一个将在两个不同的类型之间强制转换(并且mysqli_result
对象在转换为bool
时将等于true
),而===
执行类型安全比较,这意味着仅当两个操作数属于相同类型并具有相同的值时,才会满足条件。if ($conn->query($sqlmodeid_uderid) == TRUE) {
第 2 点中的相同逻辑可以用几种不同的方式编写:
if ($conn->query($sqlmodeid_uderid)) { if ((bool)$conn->query($sqlmodeid_uderid)) {
我会查看有关比较运算符的 php.net 文档以获取更多信息:
http://php.net/manual/en/language.operators.comparison.php
使用这样的代码...
$adding_user_email=$arr[1];
$sessionuserid=$_SESSION['login_user_id'];
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "company";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO modes (userid,modename) VALUES ('$sessionuserid','".$arr[0]."')";
$sqlmodeid_uderid = "SELECT userid FROM register where useremail='".$arr[1]."'";
$sqlmodeid_uderid = "SELECT userid FROM register where useremail='$adding_user_email'";
对于第二个查询,我认为你应该这样做,而不是做"=== TRUE"
$sqlmodeid_uderid = "SELECT userid FROM register where useremail='$adding_user_email'";
/* Select queries return a resultset */
if ($result = $conn->query($sqlmodeid_uderid)) {
echo "userid fetched successfully";
} else {
echo "Error: " . $sqlmodeid_uderid . "<br>" . $conn->error;
}
查看文档中的示例: http://php.net/manual/en/mysqli.query.php