Ich habe ein Problem, wo einige Variablen sind wahrscheinlich (ich kann nicht sicher wissen) nicht in die endgültige Anweisung eingefügt. Hier ist mein Beispiel ist:N1QL vorbereitete Anweisung funktioniert nicht 100%
Works:
public static function findByPageAndFieldContains($recordsPerPage, $page, $field, $searchterm) {
$query = CouchbaseN1qlQuery::fromString('SELECT * FROM `public_portal` WHERE `collection`=$collection AND TOSTRING('.$field.') LIKE "%'.$searchterm.'%" ORDER BY `_id` limit $limit offset $offset');
$query->options['$collection'] = static::COLLECTION_NAME;
//$query->options['$field'] = $field;
$query->options['$limit'] = $recordsPerPage;
$query->options['$offset'] = $recordsPerPage*($page-1);
//$query->options['$searchterm'] = $searchterm;
$result = DB::getDB()->query($query);
var_dump($query);
var_dump($result);
$objects = array();
foreach($result as $row) {
$object = new static($row->{"public_portal"});
$object->setId($row->{"public_portal"}->{"_id"});
$objects[] = $object;
}
//var_dump($objects);
return $objects;
return $result;
}
Debug-Ausgabe: debug01
funktioniert nicht:
public static function findByPageAndFieldContains($recordsPerPage, $page, $field, $searchterm) {
$query = CouchbaseN1qlQuery::fromString('SELECT * FROM `public_portal` WHERE `collection`=$collection AND TOSTRING($field) LIKE "%$searchterm%" ORDER BY `_id` limit $limit offset $offset');
$query->options['$collection'] = static::COLLECTION_NAME;
$query->options['$field'] = $field;
$query->options['$limit'] = $recordsPerPage;
$query->options['$offset'] = $recordsPerPage*($page-1);
$query->options['$searchterm'] = $searchterm;
$result = DB::getDB()->query($query);
var_dump($query);
var_dump($result);
$objects = array();
foreach($result as $row) {
$object = new static($row->{"public_portal"});
$object->setId($row->{"public_portal"}->{"_id"});
$objects[] = $object;
}
//var_dump($objects);
return $objects;
return $result;
}
Debug-Ausgabe: debug02
Grundsätzlich gibt das zweite Beispiel kein Ergebnis zurück, während das erste nur gut funktioniert.
Irgendeine Idee warum?
Ok, $ Suchbegriff funktioniert jetzt. Vielen Dank. Aber für das Feld $, entfernt ";" und mit addslashes() darauf genug oder gibt es eine spezielle Funktion für Couchbase wie es für andere RDBMS gibt? –
wie folgt: $ field = addslashes (str_replace (";", "", $ field)); –
Ich habe gerade festgestellt, dass du keine Zeichen mit '\' so no 'addslashes()' entgehen kannst. ATM Ich benutze '$ field = str_replace (["; "," '",'" ', "'", "\" "]," ", $ field);' Ist das eine gute Lösung oder tust du? eine bessere Lösung? –