Suche funktioniert nicht

Gut, probier mal Folgendes:
PHP:
<?php

	function tokenizeQuoted( $string )
	{
		for( $tokens=array(), $nextToken=strtok($string, ' '); $nextToken!==false; $nextToken=strtok(' ') ) {
			if( $nextToken{0}==chr(0x22) || $nextToken{0}==chr(0x27) ) {
				$chr = $nextToken{0};
				$nextToken = $nextToken{strlen($nextToken)-1} == $chr
					? substr($nextToken, 1, -1)
					: substr($nextToken, 1) . ' ' . strtok($chr);
			}
			$tokens[] = $nextToken;
		}
		return $tokens;
	}


	$query = '
		SELECT
		        `id`,
		        `title`,
		        `autor`,
		        `datum`,
		  FROM
		        `downloads`
		  WHERE
		        `'.$suchtabelle.'` = "%' . implode('%" OR `'.$suchtabelle.'` = "%', array_map('mysql_real_escape_string', tokenizeQuoted($search))) . '%"
		';
	$result = mysql_query($query)
		or die(mysql_error());
	while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
		echo '<pre>';
		var_dump($row);
		echo '</pre>';
	}

?>
 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `downloads` WHERE `` = "%%"' at line 6

Bei Folgender Datei:
PHP:
<?
include "../config.php";
$search = $HTTP_GET_VARS[""];
$suchein = $HTTP_GET_VARS["suchein"];



    function tokenizeQuoted( $string )
    {
        for( $tokens=array(), $nextToken=strtok($string, ' '); $nextToken!==false; $nextToken=strtok(' ') ) {
            if( $nextToken{0}==chr(0x22) || $nextToken{0}==chr(0x27) ) {
                $chr = $nextToken{0};
                $nextToken = $nextToken{strlen($nextToken)-1} == $chr
                    ? substr($nextToken, 1, -1)
                    : substr($nextToken, 1) . ' ' . strtok($chr);
            }
            $tokens[] = $nextToken;
        }
        return $tokens;
    }


    $query = '
        SELECT
                `id`,
                `title`,
                `autor`,
                `datum`,
          FROM
                `downloads`
          WHERE
                `'.$suchtabelle.'` = "%' . implode('%" OR `'.$suchtabelle.'` = "%', array_map('mysql_real_escape_string', tokenizeQuoted($search))) . '%"
        ';
    $result = mysql_query($query)
        or die(mysql_error());
    while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
        echo '<pre>';
        var_dump($row);
        echo '</pre>';
    }
?>
 
Die Angabe der Spalte, in der gesucht werden soll, fehlt. Soll dieser Wert auch vom Benutzer gewählt werden können?
 
oh, stimmt hab paar fehler drin gehabt

URL: http://localhost/coding/download/content/searchtest.php?search=test&suchein=text

PHP:
<?
include "../config.php";
$search = $HTTP_GET_VARS["search"];
$suchein = $HTTP_GET_VARS["suchein"];


		  switch ($suchein) {
		case 'autor':
   			$suchtabelle = "autor";
   			break;
		case 'datum':
   			$suchtabelle = "datum";
   			break;
		case 'title':
   			$suchtabelle = "title";
   			break;
		case 'shorttext':
   			$suchtabelle = "shorttext";
   			break;
		case 'text':
   			$suchtabelle = "text";
   			break;
			}
//ich habe eine switch anwendung gemacht, damit man die POST/GET Daten nicht manipulieren kann um in anderen spalten zu suchen

    function tokenizeQuoted( $string )
    {
        for( $tokens=array(), $nextToken=strtok($string, ' '); $nextToken!==false; $nextToken=strtok(' ') ) {
            if( $nextToken{0}==chr(0x22) || $nextToken{0}==chr(0x27) ) {
                $chr = $nextToken{0};
                $nextToken = $nextToken{strlen($nextToken)-1} == $chr
                    ? substr($nextToken, 1, -1)
                    : substr($nextToken, 1) . ' ' . strtok($chr);
            }
            $tokens[] = $nextToken;
        }
        return $tokens;
    }


    $query = '
        SELECT
                `id`,
                `title`,
                `autor`,
                `datum`,
          FROM
                `downloads`
          WHERE
                `'.$suchtabelle.'` = "%' . implode('%" OR `'.$suchtabelle.'` = "%', array_map('mysql_real_escape_string', tokenizeQuoted($search))) . '%"
        ';
    $result = mysql_query($query)
        or die(mysql_error());
    while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
        echo '<pre>';
        var_dump($row);
        echo '</pre>';
    }
?>

Fehler:
Code:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `downloads` WHERE `text` = "%t' at line 6
 
Code:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `downloads` WHERE `text` LIKE ' at line 6

if finde leider kein tutorial von dem ich eine einfache anfrage kopieren kann, ich möchte einfahc nur in einer benutzerdefinierten spalte nach der such Variablen suchen, scheint mir sehr schwer zu sein:confused:
 
Zuletzt bearbeitet:
Ich versuche mal, das Ganze zusammenzufassen:
PHP:
<?php

	include '../config.php';

	$search  = $_GET['search'];
	$suchein = in_array($_GET['searchin'], array('autor', 'datum', 'title', 'shorttext', 'text'))
		? $_GET['searchin']
		: 'text';

	$query = '
		SELECT
		        `id`,
		        `title`,
		        `autor`,
		        `datum`
		  FROM
		        `downloads`
		  WHERE
		        `'.$suchein.'` LIKE "%' . implode('%" OR `'.$suchein.'` LIKE "%', array_map('mysql_real_escape_string', tokenizeQuoted($search))) . '%"
		';
	$result = mysql_query($query)
		or die(mysql_error());
	while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
		echo '<pre>';
		var_dump($row);
		echo '</pre>';
	}

?>
Die tokenizeQuoted()-Funktionsdefinition ist hier nicht inbegriffen.
 
Code:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `downloads` WHERE `text` LIKE ' at line 6

hier kannst du dich vergewissern
 
Zurück