当前位置: 首页 > 面试题库 >

PHP SQL插入错误

郎宏逸
2023-03-14
问题内容

插入数据库时​​出现错误。

代码:

dbquery("INSERT INTO site_news_comments (articleid,title,short,comment,timestamp,userid,main,type,topstory) VALUES ($article,'".clean($commentss['title'])."','','".mysql_real_escape_string($_POST['comment'])."',current_timestamp,'".USER_ID."','0','".$commentss['type']."','')");

忽略dbquery,与mysql_query完全一样。

我收到的错误是:

 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 ''title','short','

不知道为什么会引发此错误!


问题答案:

教一个人如何钓鱼。

如果查询失败,那么您应该做的第一件事就是回显您要发送的查询:

$sql = "INSERT INTO site_news_comments (articleid,title,short,comment,timestamp,userid,main,type,topstory) VALUES ($article,'".clean($commentss['title'])."','','".mysql_real_escape_string($_POST['comment'])."',current_timestamp,'".USER_ID."','0','".$commentss['type']."','')";

echo $sql;

通常,最终查询到底出了什么问题,这是很明显的。要特别注意查询中的动态内容,通常要注意MySQL抱怨的区域。

如果看起来还可以,那么您会寻找可能需要转义的单词,例如保留的单词。

结论

看了代码mysql之后,我不得不得出结论,问题出在哪里$article,它会在您的查询中引起问题。为了以防万一,您可能也应该转义它:)

推荐

您应该了解PDO / mysqli并使用准备好的语句:

// PDO example
$stmt = $db->prepare('INSERT INTO site_news_comments (articleid, title, short, comment, timestamp, userid, main, type, topstory) VALUES (:article, :title, :short, :comment, CURRENT_TIMESTAMP, :user, :main, :type, :topstory)');
$stmt->execute(array(
    ':article' => $article,
    ':title' => $commentss['title'],
    ':short' => '',
    ':comment' => $_POST['comment'],
    ':user' => USER_ID,
    ':main' => 0,
    ':type' => $commentss['type'],
    ':topstory' => '',
));


 类似资料:
  • 问题内容: 我正在尝试使用jdbc将一些数据插入到我的数据库中。我正在使用正确的表,数据库名称和参数。一切检查完毕。 代码 这是当我尝试运行它时给我的错误: 问题答案: 您在此行中有语法错误: 您缺少values子句的右括号。

  • 问题内容: SQL查询: MySQL说: 即使在行1062处没有条目,它也会显示此重复的条目错误。(ID是主键,并且是unique(ID_Category,Keyword))。你能帮我吗?… 问题答案: 您的数据库中已经有一行带有值“ 18”和“免费邮件”的行。由于存在唯一性约束,因此不能有两个这样的行。您有一些选择: 删除原始行,然后再次尝试插入:。 删除唯一性约束以允许两行同时存在。 使用忽略

  • 我在尝试将记录插入数据库时遇到错误。 错误如下: 守则: 数据库:

  • 我有一个问题插入查询在红宝石与卡桑德拉, 这是我的表: 在ruby中,我做了一个prepare语句: 我把这些值用于测试: 我得到了这个错误: /home/florian/。rvm/gems/ruby-2 . 1 . 4/gems/Cassandra-driver-1 . 0 . 0 . RC . 1/lib/Cassandra/protocol/cql _ byte _ buffer . Rb:

  • 环境: > java 7 Cassandra 2.1.2在Windows 8.1的一个简单节点上运行在我的本地开发工作站上 驱动核心 运行环境: apache karaf 2.3.8 我试图通过在一个由简单类型(坐标为x和y)定义的列中提供一个json来插入一行。 我构建这个java语句: 在执行此操作时: 我有以下错误(完整堆栈跟踪在此消息末尾): [在下面的CQL语句中,我对列名进行了匿名化,

  • 问题内容: 我正在使用PHP。 请问什么是将新记录插入具有唯一字段的数据库的正确方法。我正在批量插入很多记录,我只想插入新记录,并且我不想重复条目有任何错误。 有没有唯一方法可以首先进行SELECT并查看条目是否在INSERT之前已经存在-并且仅在SELECT不返回任何记录时才插入INSERT?我希望不是。 我想以某种方式告诉MySQL忽略这些插入而没有任何错误。 谢谢 问题答案: 如果在重复记录