如何在 PHP 中绑定 SQL 变量?

Posted

技术标签:

【中文标题】如何在 PHP 中绑定 SQL 变量?【英文标题】:How to bind SQL variables in PHP? 【发布时间】:2010-12-24 00:37:51 【问题描述】:

我想绑定变量而不是仅仅构建 SQL 字符串。 无论如何要在 php 中做到这一点?

mysql 或 PostgreSQL 的答案都会有所帮助。

谢谢

【问题讨论】:

将表中的记录绑定到应用程序中的对象或将 PHP 中的变量“绑定”到 SQL 中的变量? “绑定”PHP 中的变量到 SQL 中的变量 :) 【参考方案1】:

有例如PDO. pdo和prepared statements(包括绑定参数)的介绍位于http://docs.php.net/pdo.prepared-statements

【讨论】:

小心使用 PDO::bindParam: ***.com/questions/833510/…【参考方案2】:

有几种口味。我相信这里更精明的人会推动您使用 PDO 准备好的语句。还有一个 sprintf() 版本。

PDO

已经在 *** here 上讨论了答案。

SPRINTF

$sql = sprintf('SELECT * FROM table WHERE id = %d AND field = %s',
               $id,
               mysql_real_escape_string($value));

【讨论】:

sprintf 如何替换绑定变量?没有对变量内容进行数据库检查。这和纯文本一样不安全 sprintf版本易受sql注入,不宜使用。【参考方案3】:

您应该阅读http://php.net/manual/en/book.mysqli.php 上的 MySQL 改进扩展 (MySQLi) 以及准备好的语句

【讨论】:

【参考方案4】:

特别是对于 Postgres - pg_query_params(和 pg_send_query_params)是最原始的绑定形式,但仍然非常有用。

然后是 PDO,但其他人已经提到了。

【讨论】:

以上是关于如何在 PHP 中绑定 SQL 变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何在pl/sql中执行绑定变量?

PHP 绑定通配符

如何在 sql/pl sql 中绑定变量

如何使用绑定变量执行 SQL 脚本

如何将 R 会话中的值替换为 SQL 绑定变量占位符?

如何在不使用 PDO 或 PHP 应用程序绑定的情况下解决二阶 SQL 注入