我问这个问题是因为我一直在墙上敲打我的头,因为这个东西很可能有一个简单的解决方案。我的问题是,我试图选择一个包含类似于“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