我该如何解决这个MySQL错误?

时间:2016-05-08 01:46:07

标签: php 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>';
  }
 }
?>

1 个答案:

答案 0 :(得分:1)

错误消息告诉您问题的确切位置;你有一个额外的 lapply(names(d.list), function(x) myfun(data= d.list[[x]], f.name = paste0(x, ".svg"))) 。取代

)

使用

$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。一个体面的IDE(如PHPStorm)会为你捕获这些错误。

此外,您对SQL injection持开放态度。你真的需要使用准备好的陈述。