By default, parameters MUST be bound using named or positional bindings.
Literals are disabled by default, and must be enabled by setting
$options['allowLiterals'] to true. As with any SQL-style language, using
parameter binding is highly recommended.
Idiomatic usage is via {@see \Google\Cloud\Datastore\DatastoreClient::gqlQuery()}.
Example:
use Google\Cloud\ServiceBuilder;
$cloud = new ServiceBuilder();
$datastore = $cloud->datastore();
$query = $datastore->gqlQuery('SELECT * FROM Companies WHERE companyName = @companyName', [
'bindings' => [
'companyName' => 'Google'
]
]);
$res = $datastore->runQuery($query);
foreach ($res as $company) {
echo $company['companyName']; // Google
}
Positional binding is also supported
$query = $datastore->gqlQuery('SELECT * FROM Companies WHERE companyName = @1', [
'bindings' => [
'Google'
]
]);
While not recommended, you can use literals in your query string:
$query = $datastore->gqlQuery("SELECT * FROM Companies WHERE companyName = 'Google'", [
'allowLiterals' => true
]);