我問這個問題是因爲我一直在牆上敲打我的頭,因爲這個東西很可能有一個簡單的解決方案。我的問題是,我試圖選擇一個包含類似於「ss & 246i」的唯一ID的記錄。如果聲明不包含&符號,它將返回正常,但如果它有一個,我不會得到任何回報。這裏是我的代碼恭維我的問題:PDO select語句中的特殊字符
<?php
@session_start();
if (isset($_POST['code'])) {
$id = $_POST['code'];
$db = new PDO('mysql:host=localhost;dbname=example', 'example', '******');
$db->exec("SET CHARACTER SET utf8");
$sql = "SELECT * FROM tbl_human_readable WHERE unique_id = :id LIMIT 1";
$stmt = $db->prepare($sql);
$stmt->bindValue(":id", $id);
try {
$stmt->execute();
} catch (PDOException $e) {
echo $e->getCode() . " - " . $e->getMessage();
}
$return = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($return);
if ($return) {
$_SESSION['code'] = $id;
echo "success";
} else {
echo "failed";
}
} else {
echo "failed";
}
一如往常在這個任何幫助是非常讚賞
您的查詢似乎對我無用,無論選擇了什麼ID。你正在學習什麼教程?無論如何,沒有特殊字符可能會影響PDO查詢。所以,你的問題在別的地方。很可能有一些編碼問題或一些無用的「消毒」功能。 – 2013-04-07 03:59:53
在查詢中將'':id''更改爲':id' - 引用由'prepare'完成。 – 2013-04-07 04:03:04
呃......用單引號貼出來並不是故意的。因爲它們不需要,所以將它們從SELECT語句中移除。任何想法爲什麼它不可用?它的作用是減去&字符。 – Cameeob2003 2013-04-07 04:04:45