0

特定の年にリリースされた特定のアーティストの CD を制作しているプロデューサーの情報を一覧表示したい。

私の試み:

$sql="SELECT * FROM producer, cd WHERE name = name and year= year JOIN SELECT * FROM cd, song WHERE  artist = '$_POST[artist]' AND cd.title ='$_POST[title]'"; 
$data=mysqli_query($sql); 
while ( $row = mysqli_fetch_array($data)) {
print_r($row); 

これが私が得ているエラーです:

エラー: SQL 構文にエラーがあります。1 行目の 'JOIN SELECT * FROM cd, song WHERE artist = '' AND cd.title =''' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

2 つのクエリを正しく結合していないのはなぜですか?

4

3 に答える 3

0

一般的な SQL と結合について少し読む必要があると思います。

必要なSQLは

選択する * から プロデューサー インナージョインcd ON Producer.[名前] = cd.[名前]

どこ cd.artist = '$_POST[アーティスト]' AND cd.title = '$_POST[タイトル]'

結合フィールドがどうなるかわからないため、テーブル 'song' は含めていません。

投稿された文字列の置換コードが正しいかどうかはわかりません。私は PHP に詳しくありません。コードが SQL インジェクション攻撃への招待状のように見えるため、いくつかの変数を宣言し、それらを $_Post から入力し、少し「クリーニング」して SQL 文字列に渡すことを強くお勧めします。

于 2013-05-24T15:44:44.373 に答える