【问题标题】:Mysq $stmt->execute( array($variable) ); does not work as expectedMysql $stmt->execute(数组($variable));没有按预期工作
【发布时间】:2014-01-08 17:33:38
【问题描述】:

Mysql 命名为2_1_paidused

NumberRenamed | Active
-----------------------
 40           |  1
 41           |  1

如果? 包含NumberRenamed,则尝试创建将Active 设置为0 的代码

这里是代码

$stmt_test = $db->prepare('UPDATE 2_1_paidused SET Active=0 WHERE NumberRenamed IN (?)');
$stmt_test->execute( array($value_execute_sql_paidused_for_inactive_rows) );

$value_execute_sql_paidused_for_inactive_rows = '40,41';

或者print_r(array($value_execute_sql_paidused_for_inactive_rows));

Array ( [0] => 40,41 ) 

结果Active 列中的0 仅设置为NumberRenamed 40 而不是41。

如果将代码更改为$stmt_test = $db->prepare('UPDATE 2_1_paidused SET Active=0 WHERE NumberRenamed IN ('. $value_execute_sql_paidused_for_inactive_rows. ');'); 然后所有工作(在两行中的值都设置为 0)

我需要纠正什么?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    我不认为你真的想运行这个查询:

    UPDATE 2_1_paidused SET Active=0 WHERE NumberRenamed IN ('40,41')
    

    您可能想要使用两个参数:

    UPDATE 2_1_paidused SET Active=0 WHERE NumberRenamed IN (?, ?)
    

    ...然后使用包含两项的数组调用execute()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多