简单的sql / php问题

时间:2014-04-01 18:38:39

标签: php sql

早上好,

我尝试做一些简单的事情,即使用函数更新一些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字段。

1 个答案:

答案 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 )
);