2011-07-02 162 views
0

我随机的一组问题,使用以下代码:插入数组值到SQL

for($i=0; $i < count($nwi); $i++) 
$itemorder[$i] = $i; 
shuffle($itemorder); 

$_SESSION["itemorder"] = $itemorder; 

几页之后,提出的问题的一部分被呈现:

for ($i=0; $i<40; $i++) { 
     if ($i % 10 ==0) echo $header; 
     echo '<tr class="'; 

     if(in_array($itemlabel[$_SESSION["itemorder"][$i]], $errors)) echo 'skip'; 
     elseif ($i % 2 == 0) echo 'even';     
     else echo 'odd';         

     echo '">'; 
     echo '<td>' . ($i + 1) . ".</td><td>" . $itemtext[$_SESSION["itemorder"][$i]] . '</td>'; 
     for ($j = 1; $j <= 6; $j++) { 
      echo "\n" . '<td'; 
      if ($j == 6) echo ' style="background-color:#999;"'; 
      echo '><input type="radio" name="'; 
      echo $itemlabel[$_SESSION["itemorder"][$i]]; 
      echo '" value="'; 
      echo $j; //value of the input 
      echo '"'; 
      if ($_POST[$itemlabel[$_SESSION["itemorder"][$i]]] == $j) echo " checked"; 
      echo '></td>'; 
     } 

在的端调查,我试图把问题的答案(应该从1-8的值范围)到我的SQL数据库中:

"INSERT INTO surveydata 
    (id, agree_pppg_01,agree_pppg_02,agree_pppg_03,.... 
VALUES  
('$_SESSION[id]', '$_SESSION[itemorder][0]', 
    '$_SESSION[itemorder][1]', '$_SESSION[itemorder][2]', 
    '$_SESSION[itemorder][3]',... 

无论我如何回答问题,我都只在我的SQL数据库中获得零。有什么建议么?

+0

我会做一个'var_dump($ _ SESSION);'以确保这些值是以开头的。 – Drazisil

+0

uhm ..这是你正在执行的SQL查询吗? –

回答

1

嗯,首先我没有看到任何分配会话值的任何内容,但是您的代码存在以下问题:'$_SESSION[itemorder][1]'。首先,我会确保MySQL预期有一个varchar,而不是int。如果它是一个整数,好的形式是确保它不被引用。

更重要的是,当你在PHP中有一个关联数组时,你需要确保PHP能够做到这一点。

$a = array("hi"=>array("world"=>0)); echo "$a[hi][world]"; 

输出

数组[世界]

周围查找戴上牙套,以确保它知道把它当作一个数组,然后把报价围绕所有字符串索引:

// note the braces and quotes 
$a = array("hi"=>array("world"=>"here")); echo "{$a["hi"]["world"]}"; 

输出

“这里”

但是,我不知道你不会是最好只使用破灭:

$columns = implode(',', $_SESSION['itemorder']); 
$query = "INSERT INTO surveydata 
       (id, agree_pppg_01,agree_pppg_02,agree_pppg_03,.... 
      VALUES ('{$_SESSION["id"]}', $columns)"; 

我感到有必要指出的是,该系统似乎没有可扩展性,而像agree_pppg_02这样的列名称不具有描述性。您可能想要访问codereview stackexchange网站,看看他们是否无法提供数据库设计技巧。