【问题标题】:You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax"您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法”
【发布时间】:2018-11-27 22:33:04
【问题描述】:

通过提示方法,我正在使用人名创建表。该方法有效,名称正在由 php 脚本解析。但是无论如何,表都没有被创建和获取以下

错误:无法执行 CREATE TABLE kat(项目 VARCHAR(50),数量 INTEGER,价格 REAL)。
您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在 'kat (Item VARCHAR(' at line 1 "

echo("<script type='text/javascript'> var answer = prompt('Enter name'); </script>");
$na= "<script type='text/javascript'> document.write(answer); </script>";
$sql = "CREATE TABLE $na (Item VARCHAR(50) , Quantity INTEGER, Price REAL)"; 
if(mysqli_query($conn, $sql)){
    echo "Table created successfully.";}
else {
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn);
}

【问题讨论】:

  • 那么,谷歌怎么说?
  • 网络服务器不会等待 javascript 在浏览器中执行,当用户在提示中输入任何内容时,它早已结束线程

标签: php mysql


【解决方案1】:

问题是您将以下内容作为表名发送($na 的扩展):

&lt;script type='text/javascript'&gt; document.write(answer); &lt;/script&gt; 在浏览器的错误消息中显示为kat,但实际上是上面的 Javascript 代码产生了无效的 SQL 语句。 $na 应该设置为您通过 GET 或 POST 发送到 Web 服务器的内容,这些内容将在 $_GET$_POST$_REQUEST 变量中可用,或者在 php://input 流中提供(如果您发送它)在 POST 请求的正文中,例如作为 JSON。另一个问题,但仍然值得一提 - 确保清理用户输入以避免 SQL 注入的可能性。

因此,例如,有一个带有字段 answer 的 POST 表单,您将其发送到服务器,然后是 $na = mysqli_escape_string($_POST["answer"]);,后跟 $sql = "create table `$na` (Item VARCHAR(50) , Quantity INTEGER, Price REAL)"; 以及您的其余代码。

【讨论】:

    【解决方案2】:

    将您的连接添加到$con.

    【讨论】:

      猜你喜欢
      • 2021-05-12
      • 2019-10-24
      • 2017-02-11
      • 2016-06-17
      • 2020-02-22
      • 1970-01-01
      • 2020-02-05
      • 2017-11-22
      • 1970-01-01
      相关资源
      最近更新 更多