php - SQL语法: passing variable to SQL select query

标签 php sql mysqli

我正在尝试将变量传递到选择查询中。查询如下

$Email = $_POST["Email"];
$Username = $_POST["User_Name"];
$FirstName = $_POST["First_Name"];
$Password = $_POST["Password"];


$CreateTable = "CREATE TABLE IF NOT EXISTS "+$Username+" (
address_id int(11) NOT NULL 
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;" ;

但是表没有创建。我错过了什么?

感谢您宝贵的时间。

最佳答案

由于您无法在此类查询中使用准备好的语句,因此您也许应该尝试从提供的用户输入中删除潜在有害的字符。

$email = filter_input( INPUT_POST, 'Email', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH );
$username = filter_input( INPUT_POST, 'User_Name', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH );
$firstname = filter_input( INPUT_POST, 'First_Name', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH );
$password = filter_input( INPUT_POST, 'Password', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH );


/* Strip any non alphanumeric charachters and replace space with underscore */
$username = preg_replace('@^[\da-z]$@i','', str_replace( ' ', '_', $username ) );


$sql = "CREATE TABLE IF NOT EXISTS `{$username}` (
    address_id int(11) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";

$db=new mysqli( $dbhost, $dbuser, $dbpwd, $dbname );
$db->query( $sql );

关于php - SQL语法: passing variable to SQL select query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44744792/

相关文章:

PHP URL 隐藏类别 id

php - 高级 MySQL 查询(分组依据和排序)

php - 如何使用另一个表的关系更新列值

mysql - 如何在元组关系演算中实现sql "where not in"?

sql - 带有关系表的 Postgres tsvector

php - 根据 mysql 的输入填充表

PHP 简单 XML : Remove items with for

php - "http://{root_dir}/oauth/token"在 Magento 中找不到用于注册 REST API 应用程序的文件

sql - 如何在 access 中编写完整的外连接查询

javascript - 使用 jquery ajax 在 div 中加载外部 php 文件