Zitat von hausl
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
PHP Suchmaschine "Parse error: syntax error, unexpected '$query' (T_VARIAB
Einklappen
Neue Werbung 2019
Einklappen
X
-
Zitat von VPh Beitrag anzeigenProblem ist jetzt mysqli_fetch_assoc(mysqli_result $query)
Das steht nur in der Dokumentation, um zu vermitteln was da als Parameter übergeben werden soll.meh();
Kommentar
-
welcher zweite Parameter? mit mysqli_result wird an der stelle nur dokumentiert, dass es sich bei $query um ein mysqli_result handelt...Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de
Kommentar
-
Ich habe mal etwas getestet und den code der connect.php an den Anfang der search.php gesetzt. Als ich die search.php dann ausgeführt habe, verschwanden die Notizen, dass fehlende Variablen im Code seien ($link). Ich verstehe hierbei nicht, warum ich meine connect.php nicht mit require_once() einbinden kann.
EDIT:
Zudem habe ich zu meinem connect.php Skript mysqli_real_escape_string() Funktionen hinzugefügt:
PHP-Code:<php
$hs = "bla";
$us = "bla";
$ps = "bla";
$db = "bla";
$link = mysqli_connect($hs, $us, $ps);
mysqli_select_db($link, $db);
$us = mysqli_real_escape_string($link, $us);
$ps = mysqli_real_escape_string($link, $ps);
$hs = mysqli_real_escape_string($link, $hs);
?>
gehalten.meh();
Kommentar
-
Hi,
warum ich meine connect.php nicht mit require_once() einbinden kann.
Habe ich die Funktionen so richtig eingesetzt? Habe mich an die Dokumentation von http://www.w3schools.com/php/func_my...ape_string.asp
gehalten.
Ich habe mal etwas getestet und den code der connect.php an den Anfang der search.php gesetzt. Als ich die search.php dann ausgeführt habe, verschwanden die Notizen, dass fehlende Variablen im Code seien ($link). Ich verstehe hierbei nicht, warum ich meine connect.php nicht mit require_once() einbinden kann.
mfg wolf29while (!asleep()) sheep++;
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
Kommentar
-
search.php
PHP-Code:<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
require_once('connect.php');
$keywords = $_POST['search'];
if (isset($keywords)) {
$query = mysqli_query($link, "SELECT * from search WHERE keywords like '%".$keywords."%' or title like '%".$keywords."%'");
echo 'Ihre Suche nach <i>'.$keywords.'</i> ergab:<br/>';
while($d = mysqli_fetch_assoc($query)) {
echo '<fieldset><legend><a href="http://x.com/x/x/'.$d['link'].'">'.$d['title'].'</a></legend>'.$d['description'].'</fieldset>';
}
}
else {
echo 'Es wurde kein Suchbegriff eingegeben.';
}
?>
PHP-Code:<?php
$hs = "bla";
$us = "bla";
$ps = "bla";
$db = "bla";
$link = mysqli_connect($hs, $us, $ps);
mysqli_select_db($link, $db);
$us = mysqli_real_escape_string($link, $us);
$ps = mysqli_real_escape_string($link, $ps);
$hs = mysqli_real_escape_string($link, $hs);
?>meh();
Kommentar
-
Das hier ...
PHP-Code:$keywords = $_POST['search'];
if (isset($keywords))
Eher so:
PHP-Code:if (isset($_POST['search'])) {
$keywords = $_POST['search'];
// ...
Info - das hier:
PHP-Code:$link = mysqli_connect($hs, $us, $ps);
mysqli_select_db($link, $db);
PHP-Code:$link = mysqli_connect($hs, $us, $ps, $db);
Dazu:
PHP-Code:<?php
$hs = "bla";
$us = "bla";
$ps = "bla";
$db = "bla";
// ...
$us = mysqli_real_escape_string($link, $us);
$ps = mysqli_real_escape_string($link, $ps);
$hs = mysqli_real_escape_string($link, $hs);
In deinem Fall gehören die $keywords (die ja via POST von aussen kommen) escaped..
Und SELECT * ist immer noch pfui.
LGThe string "()()" is not palindrom but the String "())(" is.
Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
PHP.de Wissenssammlung | Kein Support per PN
Kommentar
-
Gut, ich habe mysqli_real_string(); nun folgendermaßen in die search.php eingebaut:
PHP-Code:<?php
require_once('connect.php');
if (isset($_POST['search'])) {
$keywords = $_POST['search'];
$query = mysqli_query($link, "SELECT * from search WHERE keywords like '%".$keywords."%' or title like '%".$keywords."%'");
echo 'Ihre Suche nach <i>'.$keywords.'</i> ergab:<br/>';
while($d = mysqli_fetch_assoc($query)) {
echo '<fieldset><legend><a href="http://x.com/x/x/'.$d['link'].'">'.$d['title'].'</a></legend>'.$d['description'].'</fieldset>';
$keywords = mysqli_real_escape_string($link, $keywords);
}
}
else {
echo 'Es wurde kein Suchbegriff eingegeben.';
}
?>meh();
Kommentar
-
Gut, ich habe mysqli_real_string(); nun folgendermaßen in die search.php eingebaut:
Und SELECT * ist immer noch pfui.The string "()()" is not palindrom but the String "())(" is.
Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
PHP.de Wissenssammlung | Kein Support per PN
Kommentar
-
http://use-the-index-luke.com/blog/2...he-star-stupid
http://stackoverflow.com/questions/3...idered-harmful
und mehr, Googlesuche: "select * bad"[COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
[URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]
Kommentar
-
Zitat von Joma Beitrag anzeigenPHP-Code:$keywords = $_POST['search'];
$keywords = mysqli_real_escape_string($link, $keywords);
$query = mysqli_query($link, "SELECT * from search WHERE keywords like '%".$keywords."%' or title like '%".$keywords."%'");
Was genau an SELECT * ist den pfui?
LGThe string "()()" is not palindrom but the String "())(" is.
Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
PHP.de Wissenssammlung | Kein Support per PN
Kommentar
-
keywords werden sowieso nicht zufriedenstellen funktionieren. Der Suchende müsste dann exakt die Reihenfolge der Wörter wie in der Datenbank eingeben.[COLOR="#F5F5FF"]--[/COLOR]
[COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
„Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
[URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
[COLOR="#F5F5FF"]
--[/COLOR]
Kommentar
-
So hier einmal ein kleines Update meinerseits:
Ich habe den Code nun soweit fertiggestellt, dass er in der Datenbank sucht und Ergebnisse ausgibt. Allerdings habe ich bei den prepared_statements, dass Problem, dass der Code folgenden Fehler anzeigt:
Fatal error: Call to a member function bind_param() on a non-object
Ohne die prepared statements funktioniert der Code, allerdings wäre ich naiv auf diese zu verzichten.
Hier mein Code:
search.php
PHP-Code:<?php
include('connect.php');
$keywords = $_POST['search'];
if (isset($keywords) && $keywords !="") {
$query = mysqli_query($link, "SELECT 'title' , 'keywords' from search WHERE keywords like keywords=? or title like keywords=?");
$stmt = $link->prepare($query);
$stmt->bind_param('s', $_POST['search']);
$stmt->execute();
$stmt->close();
echo 'Ihre Suche nach <i>'.$keywords.'</i> ergab:<br/>';
$query_exists = false;
while($row = mysqli_fetch_object($query)) {
$keywords_from_db = $row->keywords;
$keywords_from_db = preg_split("#,#",$keywords_from_db);
for($i = 0; isset($keywords_from_db[$i]); $i++) {
if($keywords_from_db[$i] == $keywords) {
$query_exists = true;
echo "<br />";
echo "<a class=\"title\" href=\"".$row->link."\">".$row->title."</a> <br /> <p>".$row->description."</p>";
break;
}
}
}
if(!$query_exists) {
echo "<br /> Es wurden keine Übereinstimmungen gefunden.";
}
}
else {
echo '<br/> Es wurde kein Suchbegriff eingegeben. <br /><br />';
}
?>
PHP-Code:
$hs = "Hostadresse";
$us = "Username";
$ps = "Passwort";
$db = "Datenbank";
$link = new mysqli($hs, $us, $ps, $db) or die("Keine Verbindung");
EDIT:
Ich habe noch aus
PHP-Code:$query = mysqli_query($link, "SELECT * from search WHERE keywords like keywords=? or title like keywords=?");
PHP-Code:$query = mysqli_query($link, "SELECT 'title' , 'keywords' from search WHERE keywords like keywords=? or title like keywords=?");
meh();
Kommentar
-
Gast
http://php.net/manual/de/mysqli.prepare.php
beispiel #1
achja, bitte nicht objectorientierten und prozeduralen stil mischen....
Kommentar
Kommentar