【发布时间】:2021-02-14 23:06:23
【问题描述】:
我想更新一个表,其中列 user_id 具有值,存储在一个数组中,但我收到此错误:
数组([0] => 数组([0] => 42S22 [SQLSTATE] => 42S22 [1] => 207 [代码] => 207 [2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL 服务器]列名“数组”无效。 [消息] => [微软][ODBC 用于 SQL Server 的驱动程序 17][SQL Server]列名“数组”无效。 ))
这是我的代码:
$sql = "
SELECT usuario_id
FROM control_asistencias
WHERE
ano=".$ano." and
mes=".$mes." and
dia".$dia."='T' and
comida_habitual ='T'
";
$stmt = sqlsrv_query( $conn, $sql);
if( $stmt === false ) {
die( print_r( sqlsrv_errors(), true) );
}
$usuarios_comida_habitual = array();
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
array_push($usuarios_comida_habitual,$row['usuario_id']);
}
// Una vez que tenemos los usuarios Que han fichado para ese dia hacemos un Update
$sql_update = "
UPDATE VLD_PRESENCIA
SET VLD_PRESENCIA_DIA".$dia." = 'T'
WHERE
VLD_PRESENCIA_CODUSUARIO IN (".$usuarios_comida_habitual.") AND
VLD_PRESENCIA_COMIDA_HABITUAL = 'T'
";
$stmt2 = sqlsrv_query( $conn2, $sql_update);
if( $stmt2 === false ) {
die( print_r( sqlsrv_errors(), true) );
}
else
{
echo 'eureka';
}
有没有可能是数组的传递方式不对?或者是否可以设置我想要实现 userid 应该在该数组中的条件?
我找到了这个
array_walk($usuarios_comida_habitual , 'intval');
$ids = implode(',', $usuarios_comida_habitual);
我在生成 $sql_update 之前执行此操作
【问题讨论】:
-
如果您认为这个或任何其他答案是您问题的最佳解决方案,您可以accept它。只能接受一个答案。
标签: php sql sql-server sqlsrv