我正在进行查询以向表中插入一些值,并在同一函数中更新其他表中的所有值。
我遇到的问题是使用Insert查询,当执行时,给我一个语法错误,你可以在下面看到。
我多次查看代码,但我没有看到任何错误。当我删除插入查询工作正常,如果我删除de更新查询,只留下插入给我相同的错误。
这里是查询
if (isset($_POST['goodalt']) && isset($_POST['gengood'])){
$goodalt = mysqli_real_escape_string($con, $_POST['goodalt']);
$genid = mysqli_real_escape_string($con, $_POST['gengood']);
$res = mysqli_query($con, "SELECT * FROM `generators` WHERE `name` = '$genid'") or die(mysqli_error($con));
while($row = mysqli_fetch_assoc($res)) {
$genname = $row['name'];
}
mysqli_query($con, "INSERT INTO `user_accounts` (`username`, `accs`, `genid`, `gen-name`, `date`, `status`) VALUES ('$username', '$goodalt', '$genid', '$genname', '$date', '1'") or die(mysqli_error($con));
mysqli_query($con, "UPDATE `generator$genid` SET `status` = '3' WHERE `alt` = '$goodalt'") or die(mysqli_error($con));
}
有任何帮助吗?感谢。
答案 0 :(得分:1)
除了表单错误之外,还有一个关于并发和线程模型的大问题。 每次将INSERT / UPADATE拆分为更多单独的PHP调用两个mysql时,如果单独的查询保持DB一致,则可以分析CAREFULLY。
仔细考虑两个(或更多)Web请求(执行相同的PHP脚本)可以安全地并行运行,尤其是在您执行的代码上:
mysqli_query($con, "INSERT INTO `user_accounts` (`username`, `accs`, `genid`, `gen-name`, `date`, `status`) VALUES ('$username', '$goodalt', '$genid', '$genname', '$date', '1'") or die(mysqli_error($con));
mysqli_query($con, "UPDATE `generator$genid` SET `status` = '3' WHERE `alt` = '$goodalt'") or die(mysqli_error($con));
插入和更新是原子的,但在这里你调用两个单独的查询
答案 1 :(得分:0)
您遇到的问题是因为不必要地使用反引号或单引号。您可以按照以下文章进行更改,并且应该整理问题。
文章here
更改以下内容:
mysqli_query($con, "INSERT INTO `user_accounts` (`username`, `accs`, `genid`, `gen-name`, `date`, `status`) VALUES ('$username', '$goodalt', '$genid', '$genname', '$date', '1'") or die(mysqli_error($con));
到
mysqli_query($con, "INSERT INTO user_accounts (username, accs, genid, gen-name, date, status) VALUES ('$username', '$goodalt', '$genid', '$genname', '$date', '1'") or die(mysqli_error($con));
希望有所帮助!
答案 2 :(得分:0)
你错过了插页中的近距离......
mysqli_query($con, "INSERT INTO `user_accounts` (`username`, `accs`, `genid`, `gen-name`, `date`, `status`) VALUES ('$username', '$goodalt', '$genid', '$genname', '$date', '1')") or die(mysqli_error($con));
但你也应该使用预准备语句和绑定变量......