php - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法”

标签 php mysql

通过提示方法,我正在使用该人的姓名来创建一个表。该方法正在运行,并且该名称正在由 php 脚本解析。但无论如何,该表都没有被创建并获取以下

ERROR: Could not able to execute CREATE TABLE kat (Item VARCHAR(50) , Quantity INTEGER, Price REAL).
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '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);
}

最佳答案

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

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

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

关于php - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50920309/

相关文章:

php - 来自 json feed 的全日历开始结束时间

php - 在 Laravel 4.1 中使用 Eloquent ORM 在同一个表中查询关系

php - 每次我尝试使用 Swift 和 Alamofire 将数据发布到 MySQL 数据库时,数据都显示为空?

mysql - mysql如何对两列进行排序

mySQL 每月清理一次数据库

php - 使用 PDO 实例执行查询时出现段错误

php - Symfony 2 - 非捆绑库集成和定位

MySQL严格字符串比较语义上正确的方法?

mysql - 如何用2个表指定约束

java - 使用 play 框架连接到 mysql 数据库时出现异常