• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

MYSQL Volltextsuche funktioniert nicht

brainstorm001

Neues Mitglied
Hey Leute,

folgendes Problem. Bin gerade dabei ein Suche auf meine Website einzubauen. Nur leider funktioniert diese noch net so wie ich will.

Erstmal die Fehlermeldung:
SELECT Projekt FROM projekt WHERE MATCH (Projekt) AGAINST ('web')
Warning: mysqli_query() [function.mysqli-query]: Empty query in C:\xampp\htdocs\projekt_okt2010_2\intern\admin\include\suche.inc.php on line 41

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\projekt_okt2010_2\intern\admin\include\suche.inc.php on line 43

Den suchbegriff den ich eingebe übernimmt er, aber ich bekomme immer ein leeres query.
Wie muss ich mein Quelltext umändern das es Funktioniert, habe schon wie verrückt gegoogelt aber bin zu keinem ergebnis gekommen.

Hier noch mein Quelltext:
PHP:
<?php
         
         if (isset($_POST["send_search"])){
         
            $suche =  $_POST['search'];
            
        
            if (empty($_POST['search']))
            {
            $meldung = "Suchbegriff eingeben";
            echo "<br>";
            echo "<br>";
            echo $meldung;
            }
        
           
           else{
           
           include ($_SERVER['DOCUMENT_ROOT']."/projekt_okt2010_2/intern/admin/include/db_zugriff.inc.php");
           $sql = "SELECT Projekt FROM projekt WHERE MATCH (Projekt) AGAINST ('$suche')";
           echo $sql;
           $result = mysqli_query($db, $result);
           
           while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
            
                echo $row['Projekt'];

            }
        }
    }    
 ?>

Vielen Dank im Vorraus
 
Hallo,

du übergibst an mysqli_query() als zweiten Parameter nicht die Variable $sql, in welcher das SQL-Statement liegt, sondern eine - bis zu diesem Zeitpunkt - undefinierte Variable $result.

Gruß
 
Ok der Tip war schonmal gut aber ich glaube bekomme wohl aus der Datenbank keinen richtigen Wert zurück

SELECT Projekt FROM projekt WHERE MATCH (Projekt) AGAINST ('Website')
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\projekt_okt2010_2\intern\user\include\suche.inc.php on line 43
 
Evtl. stimmen die Felder aus dem SQL-Statement nicht mit denen in der Datenbank überein.

Lasse mal eine Fehlermeldung durch mysql_error() ausgeben:
PHP:
$result = mysqli_query($db, $result) or die(mysql_error());
 
Keine Fehlermeldung die Felder stimmen überein. Habe das Feld von Varchar in Text umgeändert aber kein besseres Ergebnis er liefert mich immer ein falsches Resultat
 
Hatte einen kleinen Tippfehler, sorry. Da du das mysqli-Extension nutzt, muss durch mysqli_error() (nicht mysql_error()) auf MySQL-Fehler überprüft werden.
 
Bekomme jetzt diese Fehlermeldung. Werde mich dann wohl nochmal ordentlich an die Fehlersuche machen dürfen

Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\xampp\htdocs\projekt_okt2010_2\intern\admin\include\suche.inc.php on line 41
 
Die Funktion erwartet einen Parameter, die MySQL-Ressource:
PHP:
$result = mysqli_query($db, $result) or die(mysqli_error($db));
 
Danke für die Mühen, aber ich kämpfe mich von einem Fehler zum nächsten, werde mich morgen weiter drum kümmern. Vielen Dank vitus37.

Catchable fatal error: Object of class mysqli_result could not be converted to string in C:\xampp\htdocs\projekt_okt2010_2\intern\admin\include\suche.inc.php on line 42


 
1. Lerne erstmal Grundlagen !!!
2. Lerne weiter Grundlagen...und
3. Änder mal den Datentyp auf Longtext

Gruß
djjasonx :mrgreen:
 
Ob TEXT oder LONGTEXT dürfte glaube ich nichts ausmachen.

Für MATCH AGAINST braucht es – meines Wissens – einen FULLTEXT-Index auf der zu durchsuchenden Spalte. Außerdem muss der Suchbegriff standardmäßig länger als 3 Zeichen sein.

Eine (in der Regel wohl wesentlich langsamere) Alternative wäre LIKE.

- MySQL :: MySQL 5.1 Reference Manual :: 11.9 Full-Text Search Functions
- MySQL :: MySQL 5.1 Reference Manual :: 11.5.1 String Comparison Functions

Poste im Zweifel noch mal deinen aktuellen Code. Da scheint ja etwas noch nicht zu stimmen.
 
Einmal echo $sql:
SELECT Projekt FROM projekt WHERE MATCH (Projekt) AGAINST ('kalle')

und $result = mysqli_query($db, $sql) or die (mysqli_error($db));
Catchable fatal error: Object of class mysqli_result could not be converted to string in C:\xampp\htdocs\projekt_okt2010_2\intern\user\include\suche.inc.php on line 42

Quelltext sieht wie folgt aus:
PHP:
if (isset($_POST["send_search"])){
         
            $suche =  $_POST['search'];
            
            if (empty($_POST['search']))
            {
            $meldung = "Suchbegriff eingeben";
            echo "<br>";
            echo "<br>";
            echo $meldung;
            }
        
           
           else{
           
           include ($_SERVER['DOCUMENT_ROOT']."/projekt_okt2010_2/intern/user/include/db_zugriff.inc.php");
           $sql = "SELECT Projekt FROM projekt WHERE MATCH (Projekt) AGAINST ('$suche')";
           echo $sql;
           $result = mysqli_query($db, $sql) or die (mysqli_error($db));
           echo $result;
           while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
            
                echo $row['Projekt'];

            }
        }
    }    
 ?>

Hoffentlich hilft das weiter, bin mit meinem Latein am ende. Vielen Dank im Vorraus.
MFG Brainstorm
 
Lass

PHP:
echo $result;

weg, denn mysqli_query erzeugt eine Ressource, keinen auszugebenden String. Wenn Du wissen willst, was in $result steht, verwende statt dessen var_dump().
 
Zurück
Oben