首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysqli_real_string_escape失败,返回GET

问mysqli_real_string_escape失败,返回GET
EN

Stack Overflow用户
提问于 2015-09-06 03:01:42
回答 1查看 66关注 0票数 0

我在一个文件中建立了一个静态数据库连接,我将其包含为

代码语言:javascript
复制
include_once 'database.inc.php';

名字叫$mysqli。

当我使用$tbname = $_GET['tbname']从表单传递参数$tbname并尝试使用$tbname = $mysqli->real_esacpe_string($tbname)时,它会生成与$tbname相同的输出,包括在名称中使用无效字符(如/,'" )时。

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

当$tbname有效并且不是由函数进行字符串转义时,我的查询

代码语言:javascript
复制
query = $mysqli->prepare("CREATE TABLE $tbname (ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY)") or trigger_error($mysqli->error."[$query]");

按预期工作。

EN

回答 1

Stack Overflow用户

发布于 2015-09-06 03:11:32

  1. 没有理由使用此函数来转义表名,并且您永远不应该将其用于此目的。
  2. 没有理由从用户输入创建表,并且您永远不应该动态创建表,但始终具有可靠和预定义的数据库\'"确实可以转义这些符号\'"。但是你永远不应该使用它。相反,您必须使用预准备语句
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32416687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档