我正在使用 MDB2 的准备好的语句,但对 documentation 有点困惑,专门处理 MySQL 内置函数,如 NOW() 或 CURDATE()。
The values passed in $data must be literals. Do not submit SQL functions (for example CURDATE()). SQL functions that should be performed at execution time need to be put in the prepared statement. Similarly, identifiers (i.e. table names and column names) can not be used because the names get validated during the prepare phase.
因此文档说将这些函数包含在准备好的语句中,但我不确定如何解释字段名。例如,如果我有一个包含五列的表格:
ID 姓 名 性别 添加日期
我想插入一行,只包含第一个、最后一个和添加的日期...我可能会使用类似的东西
INSERT INTO mytable (firstname,lastname,dateadded) VALUES('jane','doe',NOW())
如果不是添加日期列,我会使用类似的内容:
$types = array(
'text',
'text'
);
$sth = $mdb2->prepare('
INSERT INTO
mytable
VALUES
(
:firstname,
:lastname
)', $types);
$data = array(
'firstname' => 'Jane',
'lastname' => 'Doe'
);
$affectedRows = $sth->execute($data);
那么——我如何解释 MySQL 函数列出字段名的情况?或者我是否需要计划为表中的每个字段插入值?
最佳答案
我不明白你的问题。
为什么不直接将 NOW() 添加到准备好的语句中,正如它所说的那样?
$sql = 'INSERT INTO mytable ( lastname, firstname, dateadded)
VALUES (:firstname, :lastname, NOW())';
$sth = $mdb2->prepare($sql, $types);
关于mysql - MDB2 准备好的语句并插入 NOW(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14187333/