私はクラスのための簡単なウェブサイトを作っています。私は自分のデータベースに情報を保存しようとしています。エラーはあまり具体的ではなく、コードのどの部分を修正する必要があるのか分かりません。このMySQLエラーのトラブルシューティングを行うにはどうすればよいですか?
エラーメッセージ:
チェックラインで 近く使用する権利構文 ')' のためにあなたのMariaDBサーバーのバージョンに対応するマニュアル2
私のPHPコード:
<?php
include 'mysqli.php' ;
$result = $con->query("select * from setList s
left join songTable t on s.SetList_ID = t.Song_ID
left join bands b on s.SetList_ID = b.Band_ID");
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$setList = $_POST['setlist'];
$venue = $_POST['venue'];
$date = $_POST['dateOfShow'];
$band= $_POST['band'];
$set = $result->fetch_object();
//error handling and form
try {
if (empty($setList) || empty($venue) || empty($date) || empty($band)) {
throw new Exception(
"All Fields Required");
}
if (isset($set)) {
$id = $set->SetList_ID;
$q = "update setList set SetList_Name = '$setList',
Venue = '$venue', Show_Date = $date, Band_Name = '$band')";
}
else{
$q = "insert setList (SetList_Name, Venue, Show_Date, Band_Name)
values ('$setList', '$venue', $date, '$band')";
}
$result = $con->query($q);
if (!$result) {
throw new Exception($con->error);
}
header('Location:my_set-lists.php');
} catch(Exception $e) {
echo '<p class ="error">Error: ' .
$e->getMessage() . '</p>';
}
}
?>
エラーはかなりわかりやすいです:あなたのSQLアップデートステートメントに一致しない括弧があります: '' setList_Name = '$ setList'、Venue = '$ venue'、Show_Date = $ date、Band_Name = $ band ') "' '' – zyamys
**警告**:mysqliを使用する場合は、[パラメータ化されたクエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)を使用する必要があります。 ['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用して、クエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'や' $ _GET'データを直接クエリに入れないでください。誰かがあなたのミスを悪用しようとすると、非常に危険です。 – tadman
ありがとうございました。私が言ったように、私はこれに対して非常に新しく、これはクラスプロジェクトのためのものです。私は将来の使用のためにこれを念頭に置いておきます。 – ferrari3000