在我的代码中,有两个不同的查询。第一个是工作 - 我的意思是它转到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();
帮帮我。 (查询工作正常)
答案 0 :(得分:2)
条件是个问题:
$conn->query($sqlmodeid_uderid) === TRUE
如果我们咨询query
SELECT
函数,我们会看到:
失败时返回FALSE。成功的SELECT,SHOW,DESCRIBE或 EXPLAIN查询mysqli_query()将返回一个mysqli_result对象。对于 其他成功的查询mysqli_query()将返回TRUE。
当您处理true
查询时,此调用永远不会返回mysqli_result
。它会在成功时返回false
个对象,并在失败时返回false
。
相反,您可以通过多种方式重写此条件。
检查查询是否返回if ($conn->query($sqlmodeid_uderid) !== FALSE) {
。
==
使用===
代替mysqli_result
。第一个将在两种不同类型之间转换(true
对象在转换为bool
时等同于===
而if ($conn->query($sqlmodeid_uderid) == TRUE) {
执行类型安全比较,这意味着条件只会如果两个操作数具有相同的类型且具有相同的值,则满足。
if ($conn->query($sqlmodeid_uderid)) {
if ((bool)$conn->query($sqlmodeid_uderid)) {
第2点中的相同逻辑可以用几种不同的方式写出来:
{{1}}
我会查看关于比较运算符的php.net文档,了解更多信息:
答案 1 :(得分:0)
使用这样的代码......
$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'";
答案 2 :(得分:0)
对于第二个查询,我认为你应该这样做,而不是做&#34; === TRUE&#34;
$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;
}