MySQL に PHP コードを追加するのに助けが必要です。コードは次のとおりです。
$query_qPosts = "SELECT * FROM front_news WHERE draft = 1 AND department_id = 1 OR department_id = 0 ORDER BY id DESC";
「department_id = 1」と表示されているところは、1 を に置き換える必要があり<?php echo $id ?>
ます。
$query_qPosts = "SELECT * FROM front_news WHERE draft = 1 AND department_id = $id OR department_id = $id ORDER BY id DESC";
PHP では、変数を二重引用符で囲むと、変数が文字列の一部になります。例えば
$foo = 'foo';
$echo = "I am $foo";
----> I am foo
一重引用符の場合は、それらを連結する必要があります。例
$foo = 'foo';
$echo = 'I am ' . $foo;
----> I am foo
どちらを使用するかに関しては、それらを使用しているコンテキストに依存し、通常は個人的な好みに依存します. 一重引用符は、二重引用符よりも高速に実行されます。
を使用するmysqli
と、このプロセスが非常に簡単になります。
$db = new mysqli("localhost", "user", "password", "mydatabase");
$query_qPosts = $db->prepare("SELECT * FROM front_news WHERE draft = 1 AND department_id = ? OR department_id = 0 ORDER BY id DESC")
$id = 1;
$query_qPosts->bind_param("i",$id)
if (!$query_qPosts->execute()) {
echo "There was an error (" . $query_qPosts->errno . ") " . $query_qPosts->error;
}
$query_qPosts = "SELECT * FROM front_news WHERE draft = 1 AND department_id = 1 OR department_id = ".$id." ORDER BY id DESC";
試す
"SELECT *
FROM front_news
WHERE draft = 1
AND department_id = ".<?php echo (int)$id?>."
OR department_id = 0
ORDER BY id DESC";
SQL クエリで "AND" と "OR" を一緒に使用する場合は、括弧でグループ化する必要があります。そうしないと、結果が予測不能になるか、クエリが失敗します。
部署が 0 または 1 で、下書きが 1 でなければならない場合は、次のようにします。
"SELECT * FROM front_news WHERE draft = 1 AND (department_id = 1 OR department_id = 0) ORDER BY id DESC"
または、下書きが 1 である必要があり、部門が 1 または部門が 0 でなければならない場合は、これを試してください。
"SELECT * FROM front_news WHERE (draft = 1 AND department_id = 1) OR department_id = 0 ORDER BY id DESC"
どちらをやりたいかわかりません。
コード内のすべての「$」が変数として実行されるように、二重引用符を使用しています。これを確実に行うには、"{$id}" が必要な場合は中かっこで囲みます。
このコードを試してください:
$query_qPosts = "SELECT * FROM front_news WHERE draft = 1 AND department_id = $id OR department_id = 0 ORDER BY id DESC";
$id が数値であり、null でないことを確認してください