2015-09-05 107 views
0

失败我已经建立了一个文件中的静态数据库连接,我包括如mysqli_real_string_escape用GET

include_once 'database.inc.php'; 

命名$mysqli

当我通过使用$tbname = $_GET['tbname']的形式的参数$tbname,并尝试使用$tbname = $mysqli->real_esacpe_string($tbname),它产生相同的输出到$ tbname,当无效字符,如/,'"在名称中使用包括。

基于查看其他问题和正确的用法,我找不到字符串转义失败的原因。如果使用程序调用mysqli_real_escape_string($mysqli, $tbname),它也会失败。

$tbname

query = $mysqli->prepare("CREATE TABLE $tbname (ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY)") or trigger_error($mysqli->error."[$query]"); 

作品意在通过函数转义有效,不串,我的查询。

回答

0
  1. 没有理由使用此函数来转义表名,并且您不应该将其用于此目的。
  2. 从用户输入创建表没有任何理由,并且您不应该即时创建表,但始终具有可靠和预定义的数据库结构。
  3. mysqli_real_escape_string是否会转义这些符号\'"。但是你不应该使用它。相反,你必须使用准备好的语句
+0

那么我没有使用预处理语句的原因是显然你不能动态地创建这样的表。谢谢您的回答。 – socrates