sea*_*ain 1 parameterized-query google-bigquery
来自 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);
Run Code Online (Sandbox Code Playgroud)
这个查询没问题。但这并不能阻止sql注入。
我尝试将查询更改为
$query = "SELECT * FROM [myproject.mydateset.users] where user_id = '@$userId' LIMIT 1000";
Run Code Online (Sandbox Code Playgroud)
或者
$query = "SELECT * FROM [myproject.mydateset.users] where user_id = @$userId LIMIT 1000";
Run Code Online (Sandbox Code Playgroud)
防止sql注入。这两个查询都不起作用。
我尝试了这个并成功了..[google-BigQuery]
$cloud = new ServiceBuilder([
'keyFilePath' => 'project-auth-file.json'
]);
$bigQuery = $cloud->bigQuery();
$query = 'select id
from `api-project-id.dbname.tablename`
where userId = @user_id;';
$_userId = 202;
$queryJobConfig = $bigQuery->query($query)
->parameters([
'user_id' => (int)$_userId
]);
$queryResults = $bigQuery->runQuery($queryJobConfig);
foreach ($queryResults as $row) {
echo "<br>". $row['id'];
}
Run Code Online (Sandbox Code Playgroud)
{google-BigQuery}
| 归档时间: |
|
| 查看次数: |
3232 次 |
| 最近记录: |