【问题标题】:Annoying php error [closed]烦人的php错误[关闭]
【发布时间】:2014-05-20 20:32:50
【问题描述】:

过去 6 小时我一直在网上搜索并查看我的代码,但我仍然收到此错误消息。

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“$register”附近使用正确的语法

这是我的代码(以及我认为问题所在的部分):

$month = $_POST['month'];
$day = $_POST['day'];
$content = $_POST['content'];
$title = $_POST['titlename'];
$author = $_POST['author'];

$register = mysql_query("INSERT INTO posts (month, day, author, content, title) VALUES ('$month', '$day', '$author', '$content', '$title')");
    mysql_query('$register');
    echo mysql_error();

我有一张名为“posts”的表格,所有内容的拼写都是正确的,并且所有引号都有配对。我完全被难住了。真正奇怪的部分是,我已经将它与我之前的实际工作代码进行了比较,并且确实没有区别。

PS 我确实意识到我不应该直接在表格中使用用户输入,但是我将是唯一访问此表格的人。我制作这张桌子是为了让我的生活更轻松。

【问题讨论】:

  • 除了引号..您正在对 mysql_query 的结果运行 mysql_query
  • 这在过去对我有用
  • 2 个字:SQL Injection.

标签: php mysql sql


【解决方案1】:

删除引号..

 mysql_query($register);

更新

您正在运行两次 sql 查询。删除mysql_query('$register');

【讨论】:

  • 6 小时 1 分钟.. ;)
  • 以及他运行 mysql_query 两次的事实.. 一次在字符串上,一次在资源/布尔值上..
  • :) 反正我也很着急..他在字符串'$register'上运行它,而不是结果..因为那些是单引号..因此他发布的错误消息:)
【解决方案2】:

试试:

$month = $_POST['month'];
$day = $_POST['day'];
$content = $_POST['content'];
$title = $_POST['titlename'];
$author = $_POST['author'];

$register = "INSERT INTO posts (month, day, author, content, title) VALUES ('$month', '$day', '$author', '$content', '$title')";
    mysql_query($register);
    echo mysql_error();

你最好在查询之前做一些 mysql_real_escape_string() 像:

 $author = mysql_real_escape_string($author);

如果字符串中包含单引号,以避免 SQL 注入或失败

【讨论】:

    【解决方案3】:

    另外,mysql_query 不是很好,将来可能不支持。请改用 mysqli_query

        mysqli_query("INSERT INTO posts (month, day, author, content, title) VALUES ('$month', '$day', '$author', '$content', '$title')");
    

    改为。

    并删除

        mysql_query('$register');
    

    干杯

    【讨论】:

    • 为什么要投反对票? 理由拜托,我是个科学人。
    猜你喜欢
    • 1970-01-01
    • 2011-10-21
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 2010-10-01
    • 2014-12-14
    相关资源
    最近更新 更多