Can';不能让数组在PHP中工作
因此,我在这里的代码有问题:Can';不能让数组在PHP中工作,php,arrays,for-loop,Php,Arrays,For Loop,因此,我在这里的代码有问题: $answerString = $_GET['answers']; $questionsString = $_GET['questions']; $question = array(); $answer = explode(',', $answerString); $question = explode(',', $questionsString); $score = 0; for($index = 0; $index <= 9; $index++
$answerString = $_GET['answers'];
$questionsString = $_GET['questions'];
$question = array();
$answer = explode(',', $answerString);
$question = explode(',', $questionsString);
$score = 0;
for($index = 0; $index <= 9; $index++)
{
$query = "SELECT * FROM questions WHERE id = '$question[$index]'";
$result = mysql_query($query);
$rows = mysql_fetch_array($result, MYSQL_ASSOC);
$cans = $rows['answer'];
$test = array($cans);
$ans = array();
foreach ($test as $correct){
$ans[] = $correct;
}
print_r($ans);
if($answer[$index] == $rows['answer'])
{
$score++;
}
}
如果我替换了这些代码
$cans = $rows['answer'];
$test = array($cans);
$ans = array();
foreach ($test as $correct){
$ans[] = $correct;
进入这个
echo $rows['answer'];
然后它只需像这样打印所有数据:BCACABDDCB
如果有一种方法可以一次获得所有打印输出,那么我可以使用str_split来分割它们
我真的找不到这个问题的答案。提前谢谢各位。你们走错了路。首先,你甚至没有一个明确的问题/答案和ID之间的关系。你应该解决这个问题 仅供参考,您可以使用
item[key]=value
语法在GET/POST中生成数组:
?answers[1]=B&answers[2]=C&answers[3]=A
等等
至于你的PHP。。。停止使用
mysql.*
函数。它们现在使用起来很可怕(就我个人而言,在我的一堂课上使用它们的任何学生我都会不及格)
停止使用mysql.*
函数,查找SQL注入攻击。同意ceejayoz lookup PDO,了解转换需要几个小时左右,但SQL注入是安全的。@SyntaxLAMP不,它不安全。字符串插值不好。@SyntaxLAMP首先阅读上面的注释。内部foreach循环有什么意义?您从查询结果中获取单个值,强制它成为一个数组,然后在该单个项数组上循环,并将该单个项填充到另一个数组中。这完全是毫无意义的。我这么做了,但没能成功,因为我是mysql的初学者。
?answers[1]=B&answers[2]=C&answers[3]=A
<?php
// PDO object
$db = new PDO("mysql:localhost;dbname=database", $username, $password);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
// vars from HTTP
$answers = $_REQUEST['answers'];
// default vars
$score = 0;
$sql = "SELECT * FROM questions WHERE id = :id limit 1";
// here, we prepare the query above.
$query = $db->prepare($query);
foreach ($answers as $id => $answer) {
$query->execute(array(":id" => $id));
// make sure you have mysqlnd installed or anything
// involving php and mysql is a nightmare anyway.
$row = $query->fetch();
$expected = $row["answer"];
if ($answer === $expected)
$score++;
}