我正在尝试使用用户输入创建一个数据库,问题是,虽然我相信的查询是正确的,但如果我不使用变量但是自己放置数据库名称但是它有效但它不会创建任何新数据库它没有。
<?php
$con = mysqli_connect("localhost","root","");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else{
echo "Connected successfuly";
}
$postResult = $_POST[dbname];
echo $postResult;
$runSql = $con->query("CREATE DATABASE".$postResult."");
?>
以下解决方案解决了我的问题。
<?php
$con = mysqli_connect("localhost","root","");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else{
echo "Connected successfuly";
}
$postResult = $_POST['dbname'];
echo $postResult;
$safeString = $con->real_escape_string($postResult);
$runSql = $con->query("CREATE DATABASE ".$safeString."");
printf("Errormessage: %s\n", $con->error);
?>
答案 0 :(得分:0)
从中删除空格。
$runSql = $con->query("CREATE DATABASE".$postResult."");
DATABASE是已注册的关键字。另外,将索引放在引号中总是好的,除非您实际引用使用
定义的变量define('var', 'my var');
所以你的最终代码应该是这样的:
$postResult = $_POST['dbname'];
echo $postResult;
$runSql = $con->query("CREATE DATABASE ".$postResult."");