1
$count = count(array_filter($_POST["materials"]));  
for($I = 0; $I < $count; $i++)  
{ 
    $insert = mysqli_query($con, "INSERT INTO table1 (uid, materials, num, cost)
            VALUES
            (
            '$_POST[uid]',
            '$_POST[material][$i]',
            '$_POST[num][$i]',
            '$_POST[cost][$i]',
            )");        
}

如果我使用echo $_post[materials][$i]它会给我正确的结果,但在数据库中它会插入类似array[0].

看来我$insert的不对。但我没有任何想法插入它。关于如何做的任何想法?

4

3 回答 3

0
$sql_template = "INSERT INTO table1 (uid, materials, num, cost)
        VALUES(%d, %s, %s, %s)")";

$insert = mysqli_query($con, "INSERT INTO table1 (uid, materials, num, cost) = 
sprintf($sql_template, $_POST[uid], $_POST[material][$i], $_POST[num][$i], $_POST[cost][$i]);

mysqli_query($con,$insert);

有关 sprintf 的更多详细信息,请访问此链接以了解数据类型等。

于 2013-07-16T02:38:09.623 回答
0

数组到字符串:implode(',', $_POST[material][$i])

于 2013-07-16T02:28:43.697 回答
-1

您可以(并且必须)在表达式周围使用一对花括号,并引用数组键:

$insert = mysqli_query($con, "INSERT INTO table1 (uid, materials, num, cost)
            VALUES
            (
            '{$_POST['uid']}',
            '{$_POST['material'][$i]}',
            '{$_POST['num'][$i]}',
            '{$_POST['cost'][$i]}',
            )");

请参阅php.net > 字符串

这是因为 PHP 在字符串中的变量解析仅限于一维数组。对于两个或多个维度,您需要使用花括号来指示 PHP 变量的结尾。同样适用于使用字符串键访问数组。

您还需要引用字符串数组键,因为它们是实际的字符串,您应该始终正确引用它们


另请注意,如果代码不是生产代码,则代码很好。但是,您应该知道您的代码会打开一个名为SQL 注入的重大安全漏洞。如果这是更严重的工作,您应该参考链接并修复安全漏洞。

于 2013-07-16T02:46:40.473 回答