我目前正在为我的学校制作一个毕业网站,毕业生应该在其中提交评论并提交投票。
数据库有 4 个表,一张用于学生信息,一张用于问题,一张用于评论,其中有一个外键引用学生的 snum,一张用于民意调查(称为调查),其中有 2 个外键,一个再次引用 snum以及一个引用问题 ID 的问题。
这是我的学长留给我的代码。它应该做的是在评论和调查表中创建空白行以便稍后更新。然而,它实际上所做的是将评论表中的所有内容发送两次(因此,如果有 300 名学生,我最终会在评论表中得到 600 行,在调查表中得到 0 行)
我对 MySQL 和 PHP 还很陌生,大约一个月前才学会。如果有人可以提供帮助或提出更好的方法来解决此问题,我们将不胜感激。
$sql_query = "SELECT snum FROM students;";
$result = mysqli_query($link,$sql_query);
while ($list = mysqli_fetch_array($result)) {
$snum[] = $list['snum'];
}
$sql_query = "SELECT qid FROM questions WHERE want = 1;";
$result = mysqli_query($link,$sql_query);
while ($question_list = mysqli_fetch_array($result)) {
$qid[] = $list['qid'];
}
for ($i = 0; $i < count($snum); $i++)
{
$sql_query = "INSERT INTO comments (snum, comment) VALUES ('{$snum[$i]}' , NULL);";
$result = mysqli_query($link,$sql_query);
for ($a = 0; $a < count($qid); $a++) {
$sql_query = "INSERT INTO survey (snum, qid, male, female) VALUES ('{$snum[$i]}', {$qid[$a]}, NULL, NULL);";
$result = mysqli_query($link,$sql_query);
}
}
更新1:我想我找到了问题所在。当我尝试输出 $qid[$a] 时,我得到一个空值。表中,qid 是一个smallint unsigned,不为null,auto_increment,并且是主键。
最佳答案
试试这个代码
<?php
$sql_query = "SELECT snum FROM students";
$result = mysql_query($link,$sql_query);
while ($list = mysql_fetch_array($result)) {
$snum[] = $list['snum'];
}
$sql_query = "SELECT qid FROM questions WHERE want = '1' ";
$result = mysql_query($link,$sql_query);
while ($question_list = mysql_fetch_array($result)) {
$qid[] = $list['qid'];
}
for ($i = 0; $i < count($snum); $i++){
$sql_query = "INSERT INTO comments (snum, comment) VALUES ('".$snum[$i]."' , '');";
$result = mysql_query($link,$sql_query);
for ($a = 0; $a < count($qid); $a++) {
$sql_query = "INSERT INTO survey (snum, qid, male, female) VALUES ('".$snum[$i]."','".$qid[$a]."', '', '');";
$result = mysql_query($link,$sql_query);
}
}
?>
关于php - 使用 PHP 无法正确执行 INSERT MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34554140/