2016-04-19 58 views
0

我正在嘗試爲學校項目製作一個簡單的留言箱。MYSQL INSERT INTO產生錯誤:您的SQL語法出錯

似乎一切工作正常,除了當我嘗試併發送消息。我的sql查詢很簡單,但似乎沒有工作出於某種原因。

database

<?php 
session_start(); 
require_once("includes/connect.db.php"); 

$sql = "SELECT * FROM shoutbox"; 
$result = mysql_query($sql); 

echo '<table border=1>'; 
while($rows = mysql_fetch_assoc($result)){ 
    $sb_username = $rows['username']; 
    $sb_message = $rows['message']; 
    $sb_sent_time = $rows['sent_time']; 
    echo '<tr><td>' . $sb_username . ': </td><td>' . $sb_message; 
} 
echo '</table>'; 
?> 
<form method=post action=shoutbox.php> 
    <input type=text name="message"> 
    <input type=submit value="Send!"> 
</form> 

<?php 
if(isset($_POST['message'])){ 
    $date = time(); 
    $message = mysql_real_escape_string(htmlentities($_POST['message'])); 
    $username = $_SESSION['user_name']; 
    $sql = "INSERT INTO shoutbox ('username', 'message', 'time_sent') VALUES ('$username', '$message', '$date')"; 
    mysql_query($sql) or die(mysql_error()); 
} 

?> 

產生以下錯誤: 您的SQL語法錯誤;請查看與您的MariaDB服務器版本相對應的手冊,以便在''用戶名','消息','time_sent'附近使用正確的語法)第1行的VALUES('c4sper','hello','1461107151')'

+2

單引號是值的。你的列名應該使用反引號進行轉義。 (\'username \',\'message \',''time_sent \') – bassxzero

回答

1

用這個新替換你的下面的代碼行:

$sql = "INSERT INTO shoutbox (`username`, `message`, 'time_sent') VALUES ('$username', '$message', '$date')"; 

注:不是''(行情)在你的表列的(領域)名稱中使用``(反引號)在您的INSERT查詢中。

的詳細指導,看一看:

When to use single quotes, double quotes, and backticks in MySQL

1

您在字段名稱周圍使用了單引號(') - 它應該是`(反引號)符號。