1
我正在使用pdo和memcache的「智能」緩存系統。但是,我被困在這個錯誤。你能幫我嗎?使用PDO和Memcache的「智能」緩存系統
我的代碼:
$session = "a121fd4ztr6";
cache_query("SELECT * FROM `session` WHERE `session` = :session: LIMIT 1;", array(':session:' => $session));
// CACHE QUERY
function cache_query($sql, $params) {
global $db;
global $memcache;
$name = 'querycache-'.md5(serialize(array($sql, $params)));
$result = $memcache->get($name);
if (!$result) {
if(!($db)){
require("db.php");
}
$stmt = $db->prepare($sql);
$exec = $stmt->execute($params);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
$memcache->add($name, $result);
}
return $result;
}
db.php中建立到PDO的連接。 Memcache連接已經建立。我總是得到以下錯誤:
編輯:添加錯誤模式屬性之後,我現在得到一個更詳細的錯誤:
致命錯誤:未捕獲的異常「PDOException」有消息「SQLSTATE [42000]:語法錯誤或訪問衝突:1064您的SQL語法錯誤;檢查對應於您的MySQL服務器版本的手冊,以便在/chroot/home/html/session.php:17
第1行的':LIMIT 1'附近使用正確的語法^發生了什麼那?
我剛剛發現我不見了** $ DB->的setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION ); **。我現在有一個更準確的錯誤信息。我現在試着去解決它。謝謝! – 2013-02-27 17:57:37
現在說我有一個mysql語法錯誤。你能發現它嗎?我不能。我編輯了我的原始帖子。 – 2013-02-27 18:03:42
發生此錯誤是因爲您在參數名稱中沒有關閉':'。你的查詢變成這樣:'SELECT * FROM \'session \'WHERE \'session \'=:session'。別忘了引用表格和列名 – Hast 2013-02-27 18:24:15