Php:变量到SQL QUERY(PDO)

时间:2016-01-03 16:17:25

标签: php mysql pdo

我正在使用PDO从mySQL数据库调用表,如您所见:

$reponse = $bdd->query('SELECT * FROM exercices WHERE chapitre=\'hello\' ORDER BY id DESC');

现在,我想做同样的事情,而不是'你好'我想在之前使用变量集:

$reponse = $bdd->query('SELECT * FROM exercices WHERE chapitre=\'echo $cat\' ORDER BY id DESC');

它不起作用。我可能有一个问题" echo $ cat"。有人知道吗?谢谢。

4 个答案:

答案 0 :(得分:1)

使用绑定变量,我不知道变量的来源,但是为了安全:

$reponse = $bdd->query('SELECT * FROM exercices WHERE chapitre=:cat ORDER BY id DESC');
$reponse->bindParam(':cat', $cat, PDO::PARAM_STR); //assuming it is a string
$reponse->execute();
$result = $reponse->fetchAll(); //make the select
print_r($result);  //debug

答案 1 :(得分:0)

将参数作为参数传递时,不需要回显该变量。将整个字符串换行double quotes并放置变量。 PHP会解析双引号字符串,以将变量值放在字符串中。

以这种方式使用

$reponse = $bdd->query("SELECT * FROM exercices WHERE chapitre= '$cat' ORDER BY id DESC");

答案 2 :(得分:0)

您的查询可以是:

$reponse = $bdd->query('SELECT * FROM exercices WHERE 
chapitre=\''.$cat.'\' ORDER BY id DESC');

你应该理解“”和“”之间的区别,你也可以“在2个单一的配额中没有任何问题,反之亦然。如果你想写”在2个双重配额中你应该使用\也是相同的,当你写' 2个单一配额。

答案 3 :(得分:0)

我这样做的查询方式是:

$cat = $_POST['cat'];
$response = $bdd->prepare("SELECT * FROM exercices WHERE chapitre= :cat ORDER BY id DESC");
$response->bindParam(':cat', $cat,PDO::PARAM_STR);
$response->execute();

我最喜欢这个,因为它干净且易于理解。