mysql AND运算符不能用于传递多个参数

时间:2014-09-18 20:03:21

标签: php mysql database pdo

try {
$conn = new PDO('mysql:host=localhost;dbname=dbtable', $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$data = $conn->prepare('SELECT * FROM table WHERE name = ' . $conn->quote($name).' AND id = '. $conn->quote($id));
$data->execute();

while($row = $data->fetch(PDO::FETCH_ASSOC)) {
    echo "ID : ".$row['id'].'</br>';
    echo "Name : ".$row['name'].'</br>';
    echo "Name : ".$row['header'].'</br>';
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}

以上适用于一个参数(名称),但是当我使用AND运算符时,它不会显示任何结果。 URL如下所示。

http://www.mywebsite.com/page.php?id=2&name=xyz

2 个答案:

答案 0 :(得分:2)

作为mentioned in the documentation,强烈建议您使用参数化查询,如下所示:

$data = $conn->prepare('SELECT * FROM table WHERE name = :name AND id = :id');
$data->bindParam(":name", $name);
$data->bindParam(":id", $id);

如果这仍然不起作用,我建议通过phpMyAdmin或MySQL Workbench直接针对您的数据库运行类似的查询,以验证查询是否实际返回任何内容。

答案 1 :(得分:0)

$data = $conn->prepare("SELECT * FROM table WHERE name = '$name' AND id <> '$id' ");

以上代码对我有用。