Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL代码在一个循环中只执行一次而不是多次_Php_Mysql - Fatal编程技术网

Php MySQL代码在一个循环中只执行一次而不是多次

Php MySQL代码在一个循环中只执行一次而不是多次,php,mysql,Php,Mysql,使用$result=mysql\u query($SQL)或die(mysql\u error())重试 表上的主键是否正常?为了使代码正常工作,您必须在基于$result变量的$numRows变量中使用相同的数字,就像您在计数($selected\u radio)中所做的一样,情况可能并非如此。我还担心您可能没有HTML。为什么这是一个逗号分隔的字符串?单选按钮应仅返回选中的值。不管怎么说,您可能在一个隐藏的输入或其他东西中有name='h2'。在这种情况下,您的循环应该如下所示: <?

使用
$result=mysql\u query($SQL)或die(mysql\u error())重试


表上的主键是否正常?

为了使代码正常工作,您必须在基于
$result
变量的
$numRows
变量中使用相同的数字,就像您在
计数($selected\u radio)
中所做的一样,情况可能并非如此。我还担心您可能没有HTML
。为什么这是一个逗号分隔的字符串?单选按钮应仅返回
选中的值
。不管怎么说,您可能在一个隐藏的输入或其他东西中有
name='h2'
。在这种情况下,您的循环应该如下所示:

<?PHP
session_start();
if (isset($_SESSION['hasVoted']) && $_SESSION['hasVoted'] == '1') {
        print "You've already voted";
    }
else {
    if (isset($_POST['Submit1'])) {
        $ID = $_SESSION['user']; // obtain the ID of the user from the login session
        var_dump($ID);
        $string_results = $_POST['h2'];
        $selected_radio = explode(',', $string_results);
        var_dump($selected_radio);
        $user_name = "root";
        $password = "";
        $database = "surveyTest";
        $server = "127.0.0.1";
        $SQL = "SELECT * FROM tblquestions";
        $db_handle = mysql_connect($server, $user_name, $password);
        $db_found = mysql_select_db($database, $db_handle);
        if ($db_found) {
            $result = mysql_query($SQL);
            $numRows = mysql_num_rows($result); //return number of rows in the table
            var_dump($numRows);
            $qNum = 'q1';
            for ($i = 0; $i < $numRows; $i++)
            {
                var_dump($qNum);
                $_SESSION['hasVoted'] = '1';
                $selected_Value = $selected_radio[$i];
                var_dump($selected_Value);
            //==================================================================================
            //  SET Multiple rows IN THE answers TABLE for each question for a given student.
            //==================================================================================
                $SQL = "INSERT INTO answers (QID, Answer, SID) VALUES ('$qNum', '$selected_Value', '$ID')";
                $result = mysql_query($SQL);
                    $question_Number = ltrim($qNum,'q');
                    $question_Number++;
                    $qNum ='q'.$question_Number;
            }
                mysql_close($db_handle);
                print "Thank you for participating!";
        }
        else {
        print "database error";
        }
    }

    else {
        header("location:login.php");;
    }
}
session_destroy();
?>

<html>
<head>
<title>Process Survey</title>
</head>



<body>

</body>
</html>

for($i=0,$l=count($selected_radio);$iAdd调用
mysql_error
,查看数据库是否正在生成错误。您还做了大量工作来生成
$qNum
-它的值不是只有
“q”。($i+1)
?你应该使用mysqli,因为mysqli不使用多个插入,当你可以建立一个永远信任的用户输入!如果你不检查用户提供的变量,你会在几天后被黑客攻击(如果你幸运的话)…我怎么能只使用一条语句呢?谢谢,这是我错过的一件事。因此,要找出错误,只需回显mysql\u errno($db\u handle)mysql\u error,而不是mysql\u errno,它不会给你有用的信息。不,只是上面的代码和PHP会打印出你可能遇到的任何错误。在我的例子中,h2是一个隐藏的输入类型。
for($i=0,$l=count($selected_radio); $i<$l; $i++){
  //your code in here
}