1

我有一个表格,可以通过单击“[+]”符号来增加其字段。

我用于表单的代码是 Description Quantity Price ';

// 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";
    }
}
?>

我想将数据存储到数据库中。它不起作用。

请帮助我将数据存储在数据库中。

4

1 回答 1

0

由于 PHP 解析器“错误”,您的查询将无法工作。它不是一个贪婪的解析器,所以类似于:

echo "$array[1][2]";

实际上会作为输出产生

Array[2]   <---yes, the literal word 'Array'.

而不是存储在索引 1 的子数组的索引 2 处的任何值。

因为 PHP 的解析器在第一组[]. 您需要使用{}符号:

... values('{$text['detail'][$i]}', etc...
            ^                   ^

注意 的位置,以及detail 键周围的{}附加项。'

同样,请不要使用extract(),尤其是在 _GET/_POST 上。您实际上是在重现在 PHP 中打开 register_globals 时非常糟糕的糟糕日子。这是一个等待被利用的安全漏洞。

于 2012-09-24T04:32:42.850 回答