MySQL语法错误 - 第1行

时间:2016-02-26 23:05:19

标签: php mysql syntax insert

我在PHP中遇到错误。有人可以帮助我吗?

我收到此错误:

  

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在'fulltext,surl,burl,date)附近使用正确的语法VALUES'Webite在线!','这是第1行的短文本'

这是我的代码:

<?php
if(isset($_POST['submit'])) {
        if(!empty($_POST['titel']) && !empty($_POST['stext']) && !empty($_POST['fulltext']) && !empty($_POST['surl']) && !empty($_POST['burl'])) {
            $titel = secure($_POST['titel']);
            $stext = secure($_POST['stext']);
            $fulltext = secure($_POST['fulltext']);
            $surl = secure($_POST['surl']);
            $burl = secure($_POST['burl']);
            $date = date('d/m/y H:i:s');

                    $sql = mysql_query("INSERT INTO news (titel, stext, fulltext, surl, burl, date) VALUES '".$titel."', '".$stext."', '".$fulltext."', '".$surl."', '".$burl."', '".$date."'")or die(mysql_error());
                    if($sql) {
                        echo('News posted succesful.');
                        echo('<meta http-equiv="refresh" content="3" />');
                    } else {
                        echo'There was an error, please try again.';
                        echo('<meta http-equiv="refresh" content="3" />');
                    }
        } else {
            echo('Not all fields are filled.');
            echo('<meta http-equiv="refresh" content="3" />');
        }
    } else {
        echo('
        <form method="post" action="#">
        <table width="100%" cellpadding="0" cellspacing="2">
        <tr>
        <td>Titel</td>
        <td><input type="text" name="titel" /></td>
        </tr>
        <tr>
        <td>Short news</td>
        <td><textarea name="stext" rows="4" cols="50" ></textarea></td>
        </tr>
        <tr>
        <td>Long news</td>
        <td><textarea name="fulltext" rows="4" cols="50" ></textarea></td>
        </tr>
        <tr>
        <td>150x150 image url</td>
        <td><input type="text" name="surl" /></td>
        </tr>
        <tr>
        <tr>
        <td>*x* image url</td>
        <td><input type="text" name="burl" /></td>
        </tr>
        <tr>
        <tr>
        <td></td>
        <td><input type="submit" name="submit" value="Post" /></td>
        </tr>
        </table>
        </form>');
    }
?>

2 个答案:

答案 0 :(得分:1)

fulltext是MySQL reserved word。如果要将其用作列名,则需要将其添加到反引号中。

您还缺少值列表周围的括号。

$sql = mysql_query("INSERT INTO news (titel, stext, `fulltext`, surl, burl, date) VALUES ('".$titel."', '".$stext."', '".$fulltext."', '".$surl."', '".$burl."', '".$date."')")or die(mysql_error());

答案 1 :(得分:0)

首先停止在PHP 7中使用mysql_*已弃用并关闭。使用mysqli_*PDO

您的查询中的问题是您缺少VALUES ()的括号:

示例

INSERT INTO table (column1...) VALUES (values1...)

您的修改后的查询:

INSERT INTO news (titel, stext, `fulltext`, surl, burl, date) VALUES ('".$titel."', '".$stext."', '".$fulltext."', '".$surl."', '".$burl."', '".$date."'")

旁注:

确保列titel的名称正确。

<强>更新

正如Barmar @barmar先生提到的那样fulltext是MYSQL保留字,所以你需要在这个专栏周围添加反引号。