我已经在其他主题上找到了一些答案,但对我的情况却没有找到合适的答案。
我在将数组元素插入数据库时遇到了一些麻烦。 (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
上做了一个回音来测试它是否打印了两个行记录,而且确实如此。
比我执行INSERT:
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)
测试并查看值。
它会打印两个值,但只插入数组$variablename
的最后一个元素($id
)。
拜托,我做错了什么?
干杯。
答案 0 :(得分:0)
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 ));
}
}