$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
不对。但我不知道插入它。关于如何做的任何想法?
答案 0 :(得分:0)
答案 1 :(得分: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更多详细信息,请访问this link了解数据类型等。
答案 2 :(得分:-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在字符串中的变量解析仅限于单维数组。对于两个或更多维度,您需要使用花括号来表示PHP变量的结尾。同样适用于使用字符串键访问数组。
您还需要引用字符串数组键,因为它们是实际的字符串,您应该始终正确引用它们
另请注意,如果代码不是生产代码,则代码很好。但是,您应该知道您的代码会打开一个名为SQL Injection的大型安全漏洞。如果这是更严肃的工作,您应该参考该链接并修复安全漏洞。