首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP mysql_real_escape_string返回空字符串

问PHP mysql_real_escape_string返回空字符串
EN

Stack Overflow用户
提问于 2012-04-27 02:35:31
回答 6查看 27.7K关注 0票数 11

我正在尝试在我的数据库应用程序(对于一个类)中进行一些安全和清理工作。首先,我尝试使用mysql_real_escape_string,但是每当我使用它时,它总是返回一个空字符串!

下面是连接代码:

代码语言:javascript
复制
include_once ("./connect.php");
$db_connection = new mysqli($SERVER, $USERNAME, $PASSWORD, $DATABASE);
if (mysqli_connect_errno()) {
    echo("Can't connect to MySQL Server. Error code: " . mysqli_connect_error());
    return null;
}
$field = mysql_real_escape_string($_GET['value']);
$upc = $_GET['upc'];
$type = $_GET['field_type'];
echo $field;
echo $upc;
echo $type;

当实际执行php时,会打印$upc和$type,但不会打印$field。我尝试使用中间字符串,但得到了相同的结果。我真的很困惑到底是什么地方出了问题。

此外,我在$field上做了一个var_dump,它声称mysql_real_escape_string返回FALSE,这应该在没有连接(?)时发生,但有一个连接。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-04-27 04:17:54

您使用的是mysqli而不是mysql进行连接,因此需要mysqli_real_escape_string

尽管您可以很容易地在mysqli中使用预准备语句,然后您就不再需要这些语句了…

票数 18
EN

Stack Overflow用户

发布于 2012-04-27 03:49:40

请参阅PHP文档http://php.net/manual/en/function.mysql-real-escape-string.php

对MySQL连接执行

操作。如果未指定链接标识符,则假定使用mysql_connect()打开的最后一个链接。如果找不到这样的链接,它将尝试创建一个链接,就好像调用mysql_connect()时没有参数一样。如果未找到或未建立连接,则会生成E_WARNING级错误。

这意味着您需要一个活动连接才能使用此功能

如果您没有看到任何错误,请尝试

代码语言:javascript
复制
error_reporting(E_ALL);
ini_set('display_errors','On');

mysql_real_escape_string替代方案

使用

代码语言:javascript
复制
  $escaped = htmlspecialchars($_GET['value'], ENT_QUOTES, "ISO-8859-1");

或

代码语言:javascript
复制
   $escaped = filter_var($_GET['value'], FILTER_SANITIZE_STRING);     
票数 8
EN

Stack Overflow用户

发布于 2013-12-06 04:53:10

您将获得任何空字符串,因为该函数有两个参数:到数据库的实际连接,然后是字符串。使用以下命令:

代码语言:javascript
复制
$sanitizedField = mysqli_real_escape_string($connection, $field);
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10339373

复制
相关文章

相似问题

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