Problem bei Prepared Statement

serializable

Mitglied
Hallo zusammen,

ich würde gerne mehrere Parameter an ein SQL Statement übergeben. Es sollen in der Datenbank Texte durchsucht werden.

Mein Prepared Statement sieht folgendermaßen aus:

PHP:
$stmt -> bind_param("ssss", $date1, $date2, $search, $search));

Wobei $search hier ein einfacher String ist. Zukünftig soll aber ein Array aus dem Suchfeld generiert werden. Dieses Array möchte ich auslesen und die Werte einzeln das Stament übergeben.

Fraglich ist dann wie ich die Parameter binden kann ?
 
OK. Bin schon ein gutes Stück weiter gekommen. Es geht um eine Volltextsuche. Hierzu verwende ich nun das folgende Statement:

Auszug aus meiner config-Datei:
PHP:
define("SQL_SELECT4", 'SELECT *,  Match ( text) against ( ? ) AS score FROM story WHERE Match ( text) against ( ? ) AND (rundate BETWEEN ? AND ?)ORDER BY score DESC LIMIT 100;');

Die übergebenen Suchbegriffe splitte ich in ein Array und setze vor jedes Element ein + Zeichen, d.h. der Wert muss im Artikel enthalten sein.

Suchstring = "+Jubiläum +Firma "

In der Datenbank direkt abgesetzt tut das Statement genau das was es soll. Über PHP allerdings werden alle Artikel ausgegeben, bei denen ein oder mehr Suchbegriffe enthalten sind.

PHP:
public function selectData($sql, $search, $date1, $date2){

  $array = array();

  $sarray = explode(" ", $search);

  if (count($sarray) > 0){

  	foreach ($sarray as $arr){

  		$string = $string."+".$arr." ";
  	}

  }


	  /* prepare statement */
if ($stmt = $this -> mysqli->prepare($sql)) {



    $stmt->bind_param("ssss", utf8_decode($string),utf8_decode($string),  $date1, $date2 ); //Übergabe der Parameter

.......

Woran könnte das wohl liegen ?
 
PHP:
SELECT *,  Match ( text) against ('+neueröffnung +firma +stadt' ) AS score FROM story WHERE Match ( text) against ( '+neueröffnung +firma +stadt' ) AND (rundate BETWEEN '2005-01-28 00:00:00.0' AND '2009-01-28 00:00:00.0')ORDER BY score DESC LIMIT 100;


Ja, der String ergibt: string(28) "+jubil?um +neustadt +famila " als Beispiel.

ohne das utf8_decode wird Jubiläum z.B nicht gefunden....

Wenn ich Sommernacht suche in Kombination mit einer Stadt bekomme ich aber auch alle Einträge, in der die Stadt vorkommt...
 
Zurück