Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google bigquery Google Bigquery-运行参数化查询-php_Google Bigquery_Parameterized Query - Fatal编程技术网

Google bigquery Google Bigquery-运行参数化查询-php

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

从Google Bigquery文档:

运行参数化查询

BigQuery支持查询参数,以帮助防止SQL注入 查询是使用用户输入构建的。此功能仅适用于 可用标准SQL语法

要指定命名参数,请使用@字符后跟 标识符,例如@param_name

Google Bigquery提供了python和Java使用参数化查询的示例代码

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";

以防止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上,如果答案解决了您的问题,请。