奇怪的SQL错误

时间:2011-10-14 04:15:49

标签: php sql phpmyadmin

我有以下代码:

<!--ajouter une carte     -->
<?php
if($_POST["submit_dd"]){

    mysql_query("INSERT INTO data SET desc='".$_POST["carte_nom"]."' ") or die(mysql_error());



 }
?>

<b>Ajouter une carte:</b><br>
<form method="post">
<table>
<tr><td>nom</td><td><textarea name="carte_nom"/></textarea></td></tr>
<tr><td></td><td><input type="submit" name="submit_dd" value="Ajouter"/></td></tr>
</table>
</form>

我从这个非常简单的查询中得到错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc='dsfgsdfds'' at line 1

数据库非常简单:id(主要,自动增量),desc(文本)

问候

4 个答案:

答案 0 :(得分:4)

我可能错了,但您可能会收到错误,因为desc是一个sql关键字。尝试将它包裹在后面的滴答声`desc`

答案 1 :(得分:1)

desc是保留关键字。请改用"desc"

答案 2 :(得分:0)

mysql_query("INSERT INTO data (desc) VALUES('".$_POST["carte_nom"].")' ")

答案 3 :(得分:0)

Check the list of reserved keywords.“DESC”就是其中之一。

以下内容在MySQL中有效:

INSERT INTO data SET `desc` = 'post data';

你应该重新考虑你的脚本。将字段命名为与保留关键字相同是一个不好的标志。因为在使用$ _POST数据之前缺乏卫生设施。

这就是为什么desc是一个丑陋的字段名:

SELECT id, desc
FROM data
ORDER BY id desc;  #this is valid sql, but likely isn't going to do what you expect

看起来非常像

SELECT id, desc
FROM data
ORDER BY id, desc;   #not valid sql

强制性注射阅读:How does the SQL injection from the "Bobby Tables" XKCD comic work?