如何解决MySQL错误


How do i troubleshoot this MySQL error?

我正在为一个类制作一个简单的网站,并试图将信息保存到我的数据库中。这个错误不是很具体,我不知道我需要修复代码的哪一部分。

错误消息:

查看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>';
  }
 }
?>

错误消息告诉您问题的确切位置;你有一个额外的)。更换

$q = "update setList set SetList_Name = '$setList',
        Venue = '$venue', Show_Date = $date, Band_Name = '$band')";
// extra ) is here ---------------------------------------------^

$q = "update setList set SetList_Name = '$setList',
        Venue = '$venue', Show_Date = $date, Band_Name = '$band'";

注意:您的下一个查询(启动insert setList)也将失败;它应该是CCD_ 3。一个不错的IDE(比如PHPStorm)会帮你发现这些错误。

此外,您对SQL注入持开放态度。你真的需要使用事先准备好的语句。