【发布时间】:2017-03-08 17:28:16
【问题描述】:
来自 Google Bigquery 文档:
运行参数化查询
BigQuery 支持查询参数以帮助防止 SQL 注入 查询是使用用户输入构建的。此功能仅 可用于标准 SQL 语法。
要指定命名参数,请使用 @ 字符后跟 标识符,例如@param_name。
Google Bigquery 提供了 Python 和 Java 使用参数化查询的示例代码。
https://cloud.google.com/bigquery/querying-data#bigquery-query-params-python
Google Bigquery 没有用于在此处运行参数化查询的 php 示例代码。
我尝试在 php 中使用@,就像在 python 和 java 代码中一样,它不起作用。
有什么建议吗?
谢谢!
我根据 Elliott 和 Mosha 的要求添加了代码
代码:
$query = "SELECT * FROM [myproject.mydateset.users] where user_id = '$userId' LIMIT 1000";
$queryResults = $this->bigQuery->runQuery($query);
这个查询很好。但这并不能阻止sql注入。
我尝试将查询更改为
$query = "SELECT * FROM [myproject.mydateset.users] where user_id = '@$userId' LIMIT 1000";
或
$query = "SELECT * FROM [myproject.mydateset.users] where user_id = @$userId LIMIT 1000";
防止sql注入。 这两个查询都不起作用。
【问题讨论】:
-
您能分享一个您尝试运行的 PHP 代码示例吗?
-
看看代码 sn-ps 会很有帮助,尤其是如何设置参数值;并更详细地解释“不起作用”的含义。
标签: google-bigquery parameterized-query