通过prompt方法,我用这个人的名字来创建一个表,这个方法正在工作,这个名字正在被php脚本解析
错误:无法执行create table kat(item varchar(50),quantity integer,price real)。
sql语法有错误;检查与您的mariadb服务器版本相对应的手册,以获得在'kat(item varchar('在第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);
}
2条答案
按热度按时间zzwlnbp81#
将您的连接添加到
$con.
0vvn1miw2#
问题是您将以下内容作为表的名称发送(扩展
$na
):<script type='text/javascript'> document.write(answer); </script>
显示为kat
在浏览器的错误消息中,但实际上是上面的javascript代码生成了无效的sql语句。$na
应该设置为通过get或post发送到web服务器的内容,这将在$_GET
,$_POST
,或$_REQUEST
变量,或php://input
如果您在post请求的主体中发送它,例如作为json,则流。另一个问题,但仍然值得一提-确保清理用户输入以避免sql注入的可能性。例如,有一个带有字段的post表单
answer
发送到服务器,然后$na = mysqli_escape_string($_POST["answer"]);
然后$sql = "create table
$na(Item VARCHAR(50) , Quantity INTEGER, Price REAL)";
剩下的代码。