早上好,
我尝试做一些简单的事情,即使用函数更新一些mysql行并将文件路径作为WHERE参数。
这是我的更新功能,它在扩展PDO的类中。
public function update($table, $data, $where, $whereBindArray = array()) {
ksort($data);
$fieldDetails = NULL;
foreach($data as $key=> $value) {
$fieldDetails .= "`$key`=:$key,";
}
$fieldDetails = rtrim($fieldDetails, ',');
$sth = $this->prepare("UPDATE $table SET $fieldDetails WHERE $where");
foreach ($data as $key => $value) {
$sth->bindValue(":$key", $value);
}
foreach ($whereBindArray as $key => $value) {
$sth->bindValue(":$key", $value);
}
$sth->execute();
}
我的PHP代码:
$rpath = realpath(dirname(__FILE__)) . '/' . basename( __FILE__ );
$db->update(
'as_texts', array(
"content" => $_POST['content'],
"lastupdate" => date("Y-m-d H:i:s"),
"rpath = :r",
array( "r" => $rpath )
));
然后我的表sql
CREATE TABLE `as_texts` (
`ID` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(75) NOT NULL,
`rpath` VARCHAR(200) NOT NULL,
`content` TEXT NOT NULL,
`lastupdate` DATETIME NOT NULL default '0000-00-00 00-00-00',
PRIMARY KEY (`ID`),
UNIQUE KEY (`rpath`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
所以关于编辑内容,当WHERE是文件路径的rpath时,lastupdate字段。
答案 0 :(得分:1)
也许你刚把一些括号放在错误的地方:
(您的代码):
$db->update(
'as_txts', array(
"content" => $_POST['content'],
"lastupdate" => date("Y-m-d H:i:s"),
"rpath = :r",
array( "r" => $rpath )
));
在我看来,根据update()的函数签名,以下内容是正确的:
$db->update(
'as_txts', array(
"content" => $_POST['content'],
"lastupdate" => date("Y-m-d H:i:s")
),
"rpath = :r",
array( "r" => $rpath )
);