我准备好在其他主题中找到了一些答案,但不是适合我的情况的工作答案。我在将数组元素插入数据库时遇到了一些麻烦。(SQL Server)。在 PHP 中使用 foreach 循环时,循环仅将数组的最后一个元素插入到 db 中,但当我printr($arrayname)
时,它显示了正确的两个元素。
下面是一些代码。
首先,我做一个选择来分配一些变量: (子查询用于删除选择中的'","')
$sql="SELECT ... FROM ...";
$query = sqlsrv_query( $conn, $sql, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
foreach($_SESSION['cart'] as $id => $value) {
$sql.=$id.",";
}
$sql=substr($sql, 0, -1).")";
if ($query){
while($row = sqlsrv_fetch_array( $query, SQLSRV_FETCH_ASSOC) ) {
$variable=$row['rowname'];
}
}
到目前为止一切顺利,在$variable
上做了回声以测试它是否打印了两行记录,它确实如此。
比我做插入:
foreach($_SESSION['cart'] as $id => $value) {
print_r($id);
$sql="INSERT INTO() ... VALUES ('$value')";
$query= sqlsrv_query( $conn, $sql, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
}
这就是它出错的地方,我再次做了一个print($id)
来测试并查看值。它打印两个值,但只插入数组$id
的最后一个元素($variablename
)。
拜托,我做错了什么?
干杯。
foreach($_SESSION['cart'] as $id => $value) {
$sql.=$id.",";
}
$sql=substr($sql, 0, -1).")";
$query = sqlsrv_query( $conn, $sql, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
if ($query){
while($row = sqlsrv_fetch_array( $query, SQLSRV_FETCH_ASSOC) ) {
$variable=$row['rowname'];
$sql2="INSERT INTO ()";
$stmt= sqlsrv_query( $conn, $sql2, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
}
}