while循环中的mysql_query

时间:2010-10-25 20:24:28

标签: php database mysql loops

我正在尝试执行 我在这种页面中有一个html表单:

Name: <input type="text" id="namebox" value="" name="fields[]" /> <br />
Position: <input type="text" id="positionbox" value="" name="fields[]" /> <br />

<input type="hidden" name="createcard">     
<input type="submit" value="Create">

..和其他3个领域。我通过POST将这5个表单字段传递给文件process.php,该文件具有以下函数将数组元素插入到mysql数据库中。

if(isset($_POST['createcard'])){
    $this->procCreateCardtheme1();
..
..

    function procCreateCardtheme1(){
    global $session;

            $cardData = $_POST['fields'];
            $username=$session->username;
            $sno=1;
            echo count($cardData);
            while($sno < count($cardData))
            {
             $v=$cardData[$sno];
             echo $v;
             mysql_query("INSERT INTO carddata VALUES ('$username', $sno, '$v', 1)");
             $sno++;
            }

现在,上面的echo语句返回预期的输出,即五个左右的字段。但是mysql_query只执行一次。它只存储数据库中的第一个条目,而不是其他任何内容。即使重新提交表单也什么都不做。它只是存储在DB中的一个条目。 有什么想法吗?

2 个答案:

答案 0 :(得分:2)

username表中的carddata是否有唯一约束?这将导致第二次插入失败。

要调试这个,你应该为你的程序添加一些错误检查:

mysql_query("INSERT INTO carddata VALUES ('$username', $sno, '$v', 1)")
    or trigger_error(mysql_error());

如果字符串数据可以包含引号,您可能还需要使用mysql_real_escape_string来避免语法错误或可能的SQL注入漏洞。

答案 1 :(得分:0)

当查询变量($ query)存在问题时,发生单循环迭代问题 和结果对象($ result)。

为WHILE循环内的变量尝试使用其他名称,或在循环内调试变量。