在我看来,以下脚本应该有效:
$stmt = $db->prepare("UPDATE table SET status = ?, date_modified = ?");
$stmt->execute(array(1, 'NOW()'));
但经过时NOW()
进入准备好的声明中,什么也没有发生。更换NOW()
带有实际日期(即 2010-11-23)就可以了。
我无法在网上找到解释。有任何想法吗?
EDIT
只是为了进一步澄清并消除问题中的任何混乱,我想实际上将一个变量传递到准备好的语句中,但是,该变量将被设置为 mysql 的五个可能的日期/时间函数之一。
e.g.
$var = 'NOW()';
$var = 'LAST_DAY(DATE_ADD(CURDATE(),
间隔 1 个月))';
$var = 'LAST_DAY(CURDATE())';
... 等等...
准备好的语句变成:
$stmt->execute(array(1, $var));
我知道这会返回相同的 NULL 结果,但我担心如果我只是将 sql 语句更改为:
更新表设置状态 = ?,
修改日期 = $var
我正在接受注射吗?
你不需要通过NOW()
作为参数,因为不需要对其进行任何处理,因为它是内置的 SQL 函数,因此只需将其包含在实际查询中,如下所示。
$stmt = $db->prepare("UPDATE table SET status = ?, date_modified = NOW()");
或者,您可以只设置date_modified
到 TIMESTAMP 字段,它会自动更新date_modified
SQL 更新上的字段。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)