php mysql adodb

标签 php mysql adodb

我将 PHP 与 adodb 一起使用,但遇到了一个大问题。我正在使用 adodb 来加速开发,所以我可以这样做:

$r["Name"] = $_POST['txtName'];

if ($_POST["ID"] != "")
  $conn->AutoExecute("content", $r, 'UPDATE', 'AutoID = ' . $_POST["ID"]);      
else
  $conn->AutoExecute("content", $r, 'INSERT');

但是,如果该名称中有单引号,它会用斜杠保存到数据库中!因此,如果名称是 Testimonial's,它将另存为 Testimonial\'s,这给我带来了很多问题,无论如何我可以避免这种情况,但仍然像上面那样编程,因为它比准备插入/更新语句快得多。

干杯

最佳答案

这个问题的正确和最终解决方案由两部分组成:

  1. 在您的代码中以编程方式禁用所有magic_quotes。这确保您有一个已知的配置可以使用,如果/当管理员更改这些 php.ini 设置时,该配置不会被破坏。
  2. 在访问数据库之前验证/引用所有传入的用户输入!

虽然第一部分是良好的编程,但第二部分对于编写安全的应用程序绝对必不可少!

要引用用户输入,您可以采用两种方式:

  1. 手动(使用 AdoDB 的 qstrQuote),在这种情况下,您必须非常非常小心,不要遗漏任何内容。这对于小型项目来说非常可行,我过去曾多次这样做。
  2. 使用带有绑定(bind)变量的准备好的语句来进行查询。只要您正确指定变量类型,这将确保您的应用程序中永远不会有 SQL 注入(inject),并且比第一个选项更不容易出错。这就是我一段时间以来一直在做的事情。

更新:

如果您使用准备好的语句,您可能会发现 AdoDB 不会给您带来太多好处,您可以使用 PDO 完成大部分工作。当您需要“自动化”的东西时,您可以自己编写一些特定于该应用程序的函数。根据我的经验,与包含 AdoDB 相比,这只需要多做一些工作,但整体上要好一些。

关于php mysql adodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4267015/

相关文章:

php - 在 PHP 中使用 md5 验证 S3 上传是否成功

php - 如何将 Codeigniter 与 MSSQL (SQL Server) 连接?

excel - 从 Excel VBA 连接到只读 Access db

ADODB Connection.Open 上的 VBA 错误处理

javascript - 使用相同文件的 Html/JS/PHP 两个页面看起来不同(仅在 chrome 中)

php - 我无法在循环之外获取查询的值

mysql - 有效地搜索表中的特定短语

php - 为什么我的编码无法插入订购表并链接到 PayPal?

php - echo 两个表问题需要发布两次(mysql,php)

php - Adodb:Postgresql 从两个表中选择但返回一组结果