我试图使用for循环将多个会话数组发布到我的数据库,以将数组的每个元素放入数据库中。使用以下代码我收到此错误:
Warning: count() expects at most 2 parameters, 3 given
码
for ($i = 0; $i<count($_SESSION['id'], $_SESSION['name'], $_SESSION['price']); ++$i){
$Id = $_SESSION['id'][$i];
$Name = $_SESSION['name'][$i];
$Price = $_SESSION['price'][$i];
$query = "INSERT INTO custOrders(ID, ProdName, ProdPrice) VALUES('$Id', '$Name', '$Price')";
if (mysqli_query($mysqli_conn, $query)) {
header("location:index.php");
} else {
echo "Error: " . $query . "<br>" . mysqli_error($mysqli_conn);
}
}
如果我只使用1个会话数组,它会在数据库中放入数组的所有元素,但我无法设法获取其他会话数组。如何解决此问题?谢谢
答案 0 :(得分:1)
从您的代码中可以看出,您希望$_SESSION["name"]
,$_SESSION["id"]
和$_SESSION["price"]
始终包含相同数量的元素。如果在您到达for
循环时保证此假设是正确的,您可以使用$i < count($_SESSION["name"])
或其他任何内容。如果没有,您需要决定如果数组大小不等,您将要做什么。
请注意,count()
只能使用一个数组。
另请注意,在构造SQL查询时需要正确转义用户提供的输入,以避免SQL注入攻击。
答案 1 :(得分:1)
计数 - 计算array
中的所有元素,或object
中的所有元素。返回array
或countable
中的元素数。 count()可能会为未设置的变量返回0,但对于已使用empty array
初始化的变量,它也可能返回0。
int count(混合$ array_or_countable [,int $ mode = COUNT_NORMAL])
[注意:计算数组中的所有元素或对象中的某些元素。]
答案 2 :(得分:0)
试试这个(如手册php.net/count)
$a[0] = $_SESSION['id'];
$a[1] = $_SESSION['name'];
$a[2] = $_SESSION['price'];
for ($i = 0; $i<count($a); ++$i){
$Id = $_SESSION['id'][$i];
$Name = $_SESSION['name'][$i];
$Price = $_SESSION['price'][$i];
$query = "INSERT INTO custOrders(ID, ProdName, ProdPrice) VALUES('$Id', '$Name', '$Price')";
if (mysqli_query($mysqli_conn, $query)) {
header("location:index.php");
} else {
echo "Error: " . $query . "<br>" . mysqli_error($mysqli_conn);
}
}