2014-04-01 70 views
0

早上好,簡單的SQL/PHP的問題

我嘗試做一些簡單的被使用的功能更新一些MySQL的行,並給予文件路徑爲,將參數。

這是我的更新函數,它在擴展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; 

所以它是所有關於編輯的內容,當其中的是rpath LASTUPDATE場是文件路徑。

+0

是什麼讓你覺得有什麼不對?你有錯誤嗎?你做了什麼來解決這個問題? –

+0

它不起作用 –

+2

必須給我們多於 –

回答

1

也許你只是放置一些括號在錯誤的地方:

(代碼):

$db->update(
'as_txts', array(
"content" => $_POST['content'], 
"lastupdate" => date("Y-m-d H:i:s"), 
"rpath = :r", 
array("r" => $rpath) 
)); 

在我看來,那下面會根據更新的函數簽名是正確的( ):

$db->update(
'as_txts', array(
    "content" => $_POST['content'], 
    "lastupdate" => date("Y-m-d H:i:s") 
), 
"rpath = :r", 
array("r" => $rpath) 
); 
+0

夥計,謝謝。它非常明顯......得去休息一下。 –

+0

有時看起來太容易了;)如果這個答案解決了你的問題,可以點擊上面的檢查圖標的大綱,隨意標記爲「接受的答案」。 – Callidior

+0

我知道,但我需要再等2分鐘纔將anwser標記爲已解決:) –