我有一个表单,可以通过点击“[+]”符号来增加其字段。
我用于表单的代码是 描述 数量 价钱 “;
// Loop to prepare the display of 100 product lines
for ($i=0; $i<100; $i++) {
if ($text['quantity'][$i] == "") $text['quantity'][$i] = 1;
if ($text['unit'][$i] == "") $text['unit'][$i] = "0.00";
// Display only the first line
if ($nbr_ligne == 0) $nbr_ligne = 1;
if ($i >= $nbr_ligne) $display = 'style="display:none"';
echo '
<tr id="cell'.$i.'" '.$display.'>
<td>
<textarea name="text[detail]['.$i.']">'.stripslashes($text['detail'][$i]).'</textarea>
<br />
<a href="javascript:void(0)" onclick="javascript:document.getElementById(\'cell'.($i+1).'\').style.display=\'table-row\'; this.style.display=\'none\'">[+]</a>
</td>
<td>
<input name="text[quantity]['.$i.']" id="q'.$i.'" value="'.stripslashes($text['quantity'][$i]).'" size="4" />
</td>
<td>
<input name="text[unit]['.$i.']" id="u'.$i.'" value="'.stripslashes($text['unit'][$i]).'" size="7" /> USD
</td>
</tr>';
}
echo '
</table>
<input type="submit" name="save" value="Save" />
</form>
';
if(isset($_POST['save']))
{
echo $text['quantity']['.$i.'];
mysql_connect("localhost","root","");
mysql_select_db("rvt") or die("unable to select db");
extract($_POST);
$insert=mysql_query("insert into add(description, quantity, price) values('$text[detail][".$i."]','$text[quantity][".$i."]','$text[unit][".$i."]')");
if($insert)
{
echo "hi";
}
}
?>
我想将数据存储到数据库中。它不起作用。
Plz帮助我将数据存储在数据库中。
答案 0 :(得分:0)
由于PHP解析器“bug”,您的查询将无法正常工作。它不是一个贪婪的解析器,所以像:
echo "$array[1][2]";
实际上会产生输出
Array[2] <---yes, the literal word 'Array'.
而不是存储在索引1处的子数组的索引2处的任何值。
因为PHP的解析器在第一组[]
之后停止考虑数组引用。您需要使用{}
表示法:
... values('{$text['detail'][$i]}', etc...
^ ^
记下{}
的位置,以及细节键周围的附加'
。
同样,请不要使用extract()
,特别是在_GET / _POST上。你基本上复制了在PHP中打开register_globals时非常可怕的丑陋糟糕的日子。这是一个等待被剥削的安全漏洞。