当前位置: 首页 > 面试题库 >

如何在PHP中使用mysql_real_escape_string函数

司徒焕
2023-03-14
问题内容

因此,在我正在编写的此程序中,我实际上是使用表单从用户那里获取SQL查询。然后,我继续在数据库上运行该查询。

我知道不要“信任”用户输入,因此我想对输入进行清理。我正在尝试使用,mysql_real_escape_string但未能成功使用。

输入以下内容,这就是我要尝试的内容: select * from Actor;

//"query" is the input string: 
$clean_string = mysql_real_escape_string($query, $db_connection); 
$rs = mysql_query($clean_string, $db_connection); 
if (!$rs) 
{ 
    echo "Invalid input!"; 
}

这总是给我

“输入无效!”

错误。

当我取出clean_string零件并仅对mysql_query查询运行时,

“输入无效”

不输出信息。相反,当我这样做时:

$rs = mysql_query($query, $db_connection); 
if (!$rs) 
{ 
   echo "Invalid input!"; 
}

它不输出

“输入无效”。

但是,我需要使用该mysql_real_escape_string功能。我究竟做错了什么?

更新:

鉴于 select * from Actor;作为输入,我发现以下。

通过使用echo语句,我发现在清除之前,该字符串包含值: select * from Actor;
这是正确的。但是,在清理之后,它保留的错误值select *\r\nfrom Actor;,因此会显示错误消息。为什么
mysql_real_escape_string要这样做?


问题答案:

将其用于查询中的实际值,而不是整个查询字符串本身。

例:

$username = mysql_real_escape_string($_POST['username']);
$query = "update table set username='$username' ...";
$rs = mysql_query($query);


 类似资料:
  • 我一直在学习一些关于如何创建会话对象的课程,效果很好,如果我把完整的代码放到一个PHP文件中,一切都很好! 我想做的是将其放在另一个模块(PHP文件)中,只需使用一行(或等效行)即可,例如

  • 问题内容: 如何使用call_user_func_array调用类的构造函数 这是不可能的: 因为如果构造函数具有参数,则 新的 将失败。 约束:我不控制必须实例化的类,也不能修改它们。 不要问我为什么要做这个疯狂的事情,这是一个疯狂的考验。 问题答案: 您可以像这样使用反射: 从PHP 5.6.0起,也可以将运算符用于此目的。

  • 我正在用PHP编写一个基本的网站登录脚本(login_config.PHP)。 我的问题是:在用户安全/保护方面,我是否正确地实现了password_verify()函数? -注意:Post数据是从login.php发送的 代码(LOGIN_CONFIG.PHP): 编辑:我知道其他缺陷,请注意最初的问题。

  • 问题内容: 如何在PHP项目中找到任何未使用的函数? PHP中是否有功能或API可以让我分析代码库,例如Reflection,? 这些API的功能是否足够丰富,以至于我不必依靠第三方工具来执行此类分析? 问题答案: 感谢Greg和Dave的反馈。并不是我想要的,但是我决定花一些时间研究它,并提出了一个快速而肮脏的解决方案: 我可能会花更多时间,以便可以快速找到函数定义和引用的文件和行号。该信息正在

  • 问题内容: 我在用PHP编码。我有以下mySQL表: 我正在尝试在PHP中使用mysqli_query函数来描述表。 这是我的代码: 该文档说, 对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,mysqli_query()将返回 mysqli_result 对象。 但是从那里我不知道如何打印,以便显示查询结果。如果可能的话,我想打印$ result,使其看起来像: 我的另一

  • 问题内容: 我想使用Selenium来自动化一些Web任务(不用于测试)。我认为我已经安装了Selenium RC Server,但是由于无法在PHP中找到客户端驱动程序,因此无法编写“测试脚本”(请参阅​​: http //seleniumhq.org/download/)。 我有办法在PHP中使用Selenium吗?这似乎表明我需要PHPUnit http://www.phpunit.de/m