这可能听起来很愚蠢(也许是因为它)但我在插入查询中遇到了这么多问题,这就是事情,我在我的第一页中有一个插入表中的查询,问题在于我的page2,我有完全相同的查询,但在这个页面不起作用,最奇怪的是我在查询的真实语句中回显了一条消息并且它回响,这意味着该查询据说已经完成,但是不,因为当我检查数据库时,不存在,还有其他的东西!如果我想更新价值,它可以工作!,但不是在创造,我不知道为什么,但困扰我很多!,如果有人可以帮助我,我真的很感激,谢谢。
以下是代码:
if($radio==2){
echo $_SESSION["in"];
$sqlb = "SELECT * FROM table WHERE idus='$idus';";
$resb = mysqli_query($con, $sqlb);
$res_b = mysqli_fetch_array($resb);
if( !$res_b) {//if not exist on table, create
$sqly="INSERT INTO table (x,y,z)
VALUES ('$x','$y','$z');";
if ($con->query($sqly) === TRUE) {
$_SESSION["in"]=1;
} else {
echo "Error: " . $sqly . "<br>" . $con->error;
}
}else{ //update if exist on table
$sqly="UPDATE table
SET y='$y',z='$z'
WHERE idus='$idus';";
if ($con->query($sqly) === TRUE) {
} else {
echo "Error: " . $sqly . "<br>" . $con->error;
}
}
header('Location: page2.php');
}
奇怪的是,在执行查询时传递true并且什么也不做,也就是在将完全相同的查询直接粘贴到DB中时,它可以工作。
答案 0 :(得分:3)
很难分辨,因为我们看不到所有的代码,但我认为你应该替换这些代码,使用下面几行的更新查询作为参考:
$sqly="INSERT INTO table (x,y,z)
VALUES (x,y,z);";
要:
$sqly="INSERT INTO table (x,y,z)
VALUES ('$x','$y','$z');";
解释:x,y和z未定义为SQL变量,但在下面的另一个查询中,您将它们用作php变量,因此我更新了代码,将它们放在应有的位置。希望它有所帮助。
答案 1 :(得分:0)
仔细检查列名称和属性。可能是x列是错误的,如果更新有y,z工作正常。
答案 2 :(得分:0)
我没有正确理解这个问题,而是通过查看你的代码。您可以使用INSERT...ON DUPLICATE
查询来实现相同的行为。 see more here
if($radio==2){
echo $_SESSION["in"];
$sqlb = 'INSERT INTO table (x,y,z) VALUES ($x, $y, $z) ON DUPLICATE KEY UPDATE x=$x, y=$y, z=$z';
if ($con->query($sqlb) === TRUE) {
$_SESSION["in"]=1;
} else {
echo "Error: " . $sqlb . "<br>" . $con->error;
}
header('Location: page2.php');
}
答案 3 :(得分:0)
检查变量$ x,$ y,$ z变量。 如果它不是空的,那么您的代码将起作用,否则插入不起作用
答案 4 :(得分:0)
我不知道究竟是什么问题,但我通过删除所有数据库结构来修复它,然后重新做一遍,感谢您的帮助!