Google bigquery Google Bigquery-运行参数化查询-php
从Google Bigquery文档: 运行参数化查询 BigQuery支持查询参数,以帮助防止SQL注入 查询是使用用户输入构建的。此功能仅适用于 可用标准SQL语法 要指定命名参数,请使用@字符后跟 标识符,例如@param_name Google Bigquery提供了python和Java使用参数化查询的示例代码 Google Bigquery没有用于运行参数化查询的php示例代码 我试着在php中使用@,就像在python和java代码中一样,它不起作用 有什么建议吗 谢谢 我根据Elliott和Mosha的要求添加了代码 代码:Google bigquery Google Bigquery-运行参数化查询-php,google-bigquery,parameterized-query,Google Bigquery,Parameterized Query,从Google Bigquery文档: 运行参数化查询 BigQuery支持查询参数,以帮助防止SQL注入 查询是使用用户输入构建的。此功能仅适用于 可用标准SQL语法 要指定命名参数,请使用@字符后跟 标识符,例如@param_name Google Bigquery提供了python和Java使用参数化查询的示例代码 Google Bigquery没有用于运行参数化查询的php示例代码 我试着在php中使用@,就像在python和java代码中一样,它不起作用 有什么建议吗 谢谢 我根据E
$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";
或
以防止sql注入。
这两个查询都不起作用。我没有设置一个项目来尝试此操作,因此如果出现语法错误或其他疏忽,我深表歉意,但请查看此操作是否有效。我是基于这个理论的。您需要确保在查询中使用SQL,而不是传统SQL
$bigQuery = new BigQueryClient([
'projectId' => $projectId,
]);
$query = "SELECT COUNT(DISTINCT word) AS distinct_words
FROM `bigquery-public-data.samples.shakespeare`
WHERE corpus = @corpus_name;";
$queryResults = $bigQuery->runQuery(
$query,
['useLegacySql' => false],
['queryParameter' => new QueryParameter([
'name' => 'corpus_name',
'parameterType' => new QueryParameterType([
'type' => 'STRING',
]),
'parameterValue' => new QueryParameterValue([
'value' => 'kingrichardii',
]),
],
);
我没有一个项目来尝试这一点,所以我很抱歉,如果有语法错误或其他疏忽,但请看看这是否有效。我是基于这个理论的。您需要确保在查询中使用SQL,而不是传统SQL
$bigQuery = new BigQueryClient([
'projectId' => $projectId,
]);
$query = "SELECT COUNT(DISTINCT word) AS distinct_words
FROM `bigquery-public-data.samples.shakespeare`
WHERE corpus = @corpus_name;";
$queryResults = $bigQuery->runQuery(
$query,
['useLegacySql' => false],
['queryParameter' => new QueryParameter([
'name' => 'corpus_name',
'parameterType' => new QueryParameterType([
'type' => 'STRING',
]),
'parameterValue' => new QueryParameterValue([
'value' => 'kingrichardii',
]),
],
);
我尝试了这个,并成功了…[谷歌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'];
}
$cloud=新的ServiceBuilder([
'keyFilePath'=>'project auth file.json'
]);
$bigQuery=$cloud->bigQuery();
$query='选择id
来自“api-project-id.dbname.tablename”
其中userId=@user_id;';
$\u userId=202;
$queryJobConfig=$bigQuery->query($query)
->参数([
'user\u id'=>(int)$\u userId
]);
$queryResults=$bigQuery->runQuery($queryJobConfig);
foreach($queryResults作为$row){
回显“
”$row['id'];
}
{google BigQuery}我尝试了这个并成功了..[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'];
}
$cloud=新的ServiceBuilder([
'keyFilePath'=>'project auth file.json'
]);
$bigQuery=$cloud->bigQuery();
$query='选择id
来自“api-project-id.dbname.tablename”
其中userId=@user_id;';
$\u userId=202;
$queryJobConfig=$bigQuery->query($query)
->参数([
'user\u id'=>(int)$\u userId
]);
$queryResults=$bigQuery->runQuery($queryJobConfig);
foreach($queryResults作为$row){
回显“
”$row['id'];
}
{google BigQuery}你能分享一个你试图运行的PHP代码的示例吗?看看代码片段,特别是你如何设置参数值,会很有帮助;更详细地解释“不工作”的含义。你能分享一个你试图运行的PHP代码的示例吗?看看代码片段,特别是你如何设置参数值,会很有帮助;更详细地解释“不起作用”的含义。在StackOverflow上,如果答案解决了您的问题,请。在StackOverflow上,如果答案解决了您的问题,请。