プロジェクトのバックオフィスで検索バーを改良しています。
私が利用可能キーワードでカテゴリの名前を含めることcategory
テーブルに入社、protfolio
テーブルの研究をしたいです。シンプルなようだが、私は買ってあげるだけのメッセージは次のとおりです。PHP SQL - 左結合+ +または
警告:PDOStatementには::)(実行します。SQLSTATE [42S22]:見つからないカラム: 1054不明な列 'search_0を' 'where句' 内に[...]
私はこのように、それを実行する前に、動的SQLクエリを作成しています:
$keywords = explode(" ", $_POST['search']);
$query = "SELECT * FROM portfolio LEFT JOIN category
ON portfolio.portfolio_category_id = category.category_id
WHERE ";
$query_array = array();
for ($i = 0; $i < count($keywords); $i += 1) {
$query .= "portfolio.portfolio_title LIKE :search_" . $i;
$query .= " OR category.category_name LIKE search_" . $i;
if ($i != (count($keywords) - 1)) {
$query .= " OR ";
}
$query_array['search_' . $i] = "%" . $keywords[$i] . "%";
}
$list_portf = $bdd->prepare($query);
$list_portf->execute($query_array);
私はエラーがどこにあるか私は本当に理解していないSQLに亀裂はありませんよ(私が見つけた質問に答えが見つかりませんでした)。ありがとう。
をsearch_ためにあなたの二refはあなたが 'クエリを実行する前に$ query_array'をエコーする前に、コロン
:
を逃したようですか?それは私たちがエラーを見つけるのを助けるはずです – KuKeC@KuKeC私はコロンを逃しました(答えはどこにあるのですか)。ごめんなさい ! 私は質問をクローズしています – AymDev
ユーザーからの検索語をフィルタリングせずに直接SQLクエリに挿入するべきではないことに注意してください。これはSQLインジェクションの脆弱性の定義です。おそらく参照してください:http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – pseudocoder