通过提示方法,我正在使用该人的姓名来创建一个表。该方法正在运行,并且该名称正在由 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/