クエリの何が問題なのかを理解するのに本当に苦労しています。var_dump($ sqli);を使用する場合 データを含まないクエリ全体をエコーアウトするだけです。
ユーザーが都市を検索したときに返される検索結果がその都市に関連付けられたアトラクションになるようにクエリを作成したいと思います。コードにいくつかのエラーがあることに気付きましたが、クエリが完了したら、そこから移動して残りのコードをデバッグします。私のクエリが機能しない理由について誰かが何か考えを持っているなら、私は彼らに大いに感謝します。
require_once('config1.php');
error_reporting(E_ALL);
$output = '';
if(isset($_POST['search'])){
$searchq = $_POST['search'];
$sqli = 'SELECT attraction_name, lat, long, cost FROM zz_attractions WHERE city_id IN SELECT city_id FROM zz_city WHERE city_name LIKE %searchq%' or die("could not search");
var_dump($sqli);
$result = mysqli_query($conn, $sqli);
$count = mysqli_num_rows($result);
if ($count == 0) {
$output = 'there was no search results';
} else {
while ($row = mysql_fetch_array($sqli)) {
$attraction_name = $row['attractionname'];
$lat = $row['latitude'];
$long = $row['longitude'];
$cost = $row['cost'];
$output .= '<div>'.$attraction_name.' '.$lat.' '.$long.' '.$cost.'</div>';
}
}
}
ここに示す括弧が必要なため、現在のクエリは失敗します。
SELECT attraction_name, lat, long, cost
FROM zz_attractions
WHERE city_id IN (SELECT city_id
FROM zz_city
WHERE city_name
LIKE '%searchq%')
しかし、それを行うためのより良い方法は、内部結合です。
SELECT a.attraction_name, a.lat, a.long, a.cost
FROM zz_attractions a
INNER JOIN zz_city c ON a.city_id = c.city_id
WHERE c.city_name LIKE '%searchq%'
ただの観察、それ以上は...
PHPコーダーがすべてのSQLクエリを単一の行として持つ傾向がある理由を完全には理解していません
$query = '
SELECT a.attraction_name, a.lat, a.long, a.cost
FROM zz_attractions a
INNER JOIN zz_city c ON a.city_id = c.city_id
WHERE c.city_name LIKE %searchq%
';
echo $query;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加