【发布时间】:2011-11-21 16:54:47
【问题描述】:
我正在尝试使用 PDO,所以我把它放在一起:
所以,$_GET['word'] = "Jimi Hendrix" 和 $_GET['cat'] = "music"。
$now = htmlentities(rawurldecode($_GET['word']));
$cat = htmlentities($_GET['cat']);
$dsn = 'mysql:dbname=DATABASE;host=localhost';
$user = "USER";
$password = "PASS";
# connect to the database
try {
$DBH = new PDO($dsn, $user, $password);
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
# the data to select
$data = array($cat, $now);
$STH = $DBH->prepare("SELECT id, name FROM ? WHERE name LIKE ?");
$STH->execute($data);
$result = $STH->fetchAll();
}
catch(PDOException $e) {
echo "Uh-Oh, something wen't wrong. Please try again later.";
file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);
}
echo "<pre>";
print_r($result);
echo "</pre>";
但上面的代码正在返回:
SQLSTATE[42000]: Syntax error or access violation: 1064 You Have a Syntax error in your SQL near ''music' WHERE name LIKE 'Jimi Hendrix'' on line 1
【问题讨论】:
-
Off-Question-Topic:
name LIKE 'Jimi Hendrix'与name = 'Jimi Hendrix'相似...您可以将其更改为name LIKE '%Jimi Hendrix%'也可以找到“Somebody feat. Jimi Hendrix(住在某处)'。另外,我会将name和word压缩为小写,这样您就不会在案例部门遇到问题。