我正在尝试执行 我在这种页面中有一个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中的一个条目。 有什么想法吗?
答案 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循环内的变量尝试使用其他名称,或在循环内调试变量。