2016-03-23 5 views
1

Uncaught PDOException: SQLSTATE [HY093]: Ungültige Parameternummer: Anzahl der gebundenen Variablen Anzahl von Token nichtSphinx PDO mehrere Variablen in ausführen Fehler

übereinstimmen Wenn ich versuche, die unter PDO Abfrage auszuführen Bei mehreren Variablen bekomme ich den obigen Fehler.

$array = $sphinx->prepare("select * from `indexname` where MATCH ('@name (:search)') AND 
`price` BETWEEN :min AND :max"); 
$array->execute(array(':search' => $search, ':min' => $min, ':max' => $max)); 

Wenn ich nur die :search verwenden und :min and :max die Abfrage funktioniert zu $min and $max ändern.

$array = $sphinx->prepare("select * from `indexname` where MATCH ('@name (:search)') AND `price` BETWEEN $min AND $max"); 
$array->execute(array(':search' => $search)); 

Kann ich nur 1 Variable in Ausführung mit Sphinx verwenden?

Antwort

1

Mit einem Platzhalter können Sie a complete data literal only binden.

Deshalb müssen Sie Ihre Suchmuster in PHP zuerst kompilieren und dann auf die Anfrage senden:

$stmt = $sphinx->prepare("select * from `indexname` where MATCH (:search) AND 
`price` BETWEEN :min AND :max"); 
$stmt->bindValue(':search', "@name ($search)"); 
$stmt->bindValue(':min', (int)$min, PDO::PARAM_INT); 
$stmt->bindValue(':max', (int)$max, PDO::PARAM_INT); 
$stmt->execute(); 
+0

Fügen Sie Ihren aktuellen Code auf die Frage. –

+0

anderer Fehler - 1064 sphinxql: Syntaxfehler, unerwartetes QUOTED_STRING, erwartet CONST_INT (oder 3 andere Token) in der Nähe von "0" UND "1000" .... – user3312792

+0

das ist ein anderes Problem mit PDO, siehe aktualisierten Code –