php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack (1) Themen-Optionen Thema bewerten
  1 links from elsewhere to this Post. Click to view. #1 (permalink)  
Alt 22-03-2017, 16:19
hippo21
 Registrierter Benutzer
Links : Onlinestatus : hippo21 ist offline
Registriert seit: Jun 2016
Beiträge: 14
hippo21 befindet sich auf einem aufstrebenden Ast
Standard Suchscript funktioniert nicht

Hallo

Ich arbeite als absoluter Anfänger an einem kleinen Suchscript das ein feld in einer sql datenbank durchsuchen soll.

Habe schon einige fehler beseidigen können aber dieser bleibt hartnäckig.

also hier mal der Code

PHP-Code:
<html>
<head>
<titel>PHP Suche</titel>
<link rel="stylsheet"type="type=text/css" href=2design.css"/>
</head>
<body>
<header>HTMLworld</header>
<section>
<form method="get">
<input type="text" class="suchfeld" name= "search" />
<input type="submit" class="suchbutton" name= "Suche" />
<form>
<p>
<?php
if (isset($_GET["search"])){
$suchwort =$_GET["search"];
$abfrage "";

echo 
"$suchwort";

$suchwort =explode(" "$suchwort);
for (
$i $i sizeof($suchwort) ; $i++)

{
$abfrage .= "'keywort' like '%" $suchwort[$i] ."%'";


if(
$i < (sizeof($suchwort) - 1)) {
$abfrage .="or";

}
}



$db = @new mysqli (  'localhost''root1''####''suche1');
if (
mysqli_connect_errno() == 0
echo 
"Die datenbank verbindung hat geklappt";
{
$sql " SELECT * FROM 'linkliste' WHERE " .abfrage  ;
$ergebniss $db->query($sql);

while (
$zeile $ergebnis->fetch_object()) {
echo 
"<p>";
echo 
$zeile->linknr;
echo 
"<nbsp;nbsp>";
echo 
$zeile->keywort;
echo 
"nbsp;nbsp;<b>";
echo 
$zeile->link;
echo 
"</b></p>";
}
}
$db->close;

}



?>
</p>
</section>
</body>
und hier die fehlermeldung.
Fatal error: Uncaught Error: Call to a member function fetch_object() on null in C:\WTServer\WWW\suche\test3.php:43 Stack trace: #0 {main} thrown in C:\WTServer\WWW\suche\test3.php on line 43


Ich denke es liegt daran das halt nur null in der Abfrage produziert wird.
oder halt bei der $db. Aber das sind nur Vermutungen. Das ist das erstemal mit PHP7 und ich bräuchte eure hilfe.

Gruss aus Kaiserslautern
micha
Mit Zitat antworten
  #2 (permalink)  
Alt 22-03-2017, 16:39
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 451
mermshaus wird schon bald berühmt werden
Standard

Deine SQL-Query ist fehlerhaft. Den genauen Fehler kannst du dir anzeigen lassen:

- PHP: mysqli::$error - Manual

Die einfachen Anführungszeichen um Tabellenname und Feldnamen sind falsch. Das DBMS hält das so sicherlich für Strings. Entweder ganz auslassen oder Backticks (`…`) verwenden.

Das ist in der Form zudem anfällig für SQL-Injections. Kontextwechsel korrekt durchführen:

- http://wiki.selfhtml.org/wiki/PHP/An...Kontextwechsel
- http://php.net/manual/en/mysqli.real-escape-string.php

Geändert von mermshaus (22-03-2017 um 16:42 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 22-03-2017, 17:14
hippo21
 Registrierter Benutzer
Links : Onlinestatus : hippo21 ist offline
Registriert seit: Jun 2016
Beiträge: 14
hippo21 befindet sich auf einem aufstrebenden Ast
Standard

Hallo
Welche Anführungszeichen meinst du genau.
PHP-Code:
'keywort' 
oder
PHP-Code:
 '%" . $suchwort[$i] ."%'" 
wenn ich bei
PHP-Code:
$sql " SELECT * FROM 'linkliste' WHERE " .abfrage  
linkliste ohne anführungszeichen setze er halte ich noch eine weitere Fehlermeldung.
Warning: mysqli::query(): Couldn't fetch mysqli in C:\WTServer\WWW\suche\test3.php on line 41
Mit Zitat antworten
  #4 (permalink)  
Alt 23-03-2017, 00:41
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 451
mermshaus wird schon bald berühmt werden
Standard

Um den Tabellennamen (linkliste) und um die bzw. den Feldname(n) (keywort) gehören keine Anführungszeichen (im Sinne von '…' oder "…").

Du schreibst auch einmal $ergebniss und einmal $ergebnis, sehe ich gerade noch.

Und bei $abfrage fehlt einmal das Dollarzeichen.
Mit Zitat antworten
  #5 (permalink)  
Alt 23-03-2017, 07:33
bandit600
 Registrierter Benutzer
Links : Onlinestatus : bandit600 ist offline
Registriert seit: Jan 2010
Beiträge: 182
bandit600 befindet sich auf einem aufstrebenden Ast
Standard

Und bei
PHP-Code:
$abfrage .="or"
fehlen 2 Blanks
Mit Zitat antworten
  #6 (permalink)  
Alt 23-03-2017, 12:43
hippo21
 Registrierter Benutzer
Links : Onlinestatus : hippo21 ist offline
Registriert seit: Jun 2016
Beiträge: 14
hippo21 befindet sich auf einem aufstrebenden Ast
Standard

Hallo
hab mal geändert was du gesagt hast aber leider ohne Besserung.
Hier mal der geänderte code

PHP-Code:
<header>HTMLworld</header>
<section>
<form method="get">
<input type="text" class="suchfeld" name= "search" />
<input type="submit" class="suchbutton" name= "Suche" />
<form>
<p>
<?php
if (isset($_GET["search"])){
$suchwort =$_GET["search"];
$abfrage "";

echo 
"$suchwort";

$suchwort =explode(" "$suchwort);
for (
$i 0$i sizeof($suchwort); $i++)

{
$abfrage .= "keywort like '%" $suchwort[$i] . "%'";


if(
$i < (sizeof($suchwort) - 1)) {
$abfrage .="or";

}
}



$db = @new mysqli (  'localhost''root1''####''suche1');
if (
mysqli_connect_errno() == 0
echo 
"Die datenbank verbindung hat geklappt";
{
$sql " SELECT * FROM linkliste WHERE  .$abfrage.  ";
$ergebnis $db->query($sql);

while (
$zeile $ergebnis->fetch_object()) {
echo 
"<p>";
echo 
$zeile->linknr;
echo 
"<nbsp;nbsp>";
echo 
$zeile->keywort;
echo 
"nbsp;nbsp;<b>";
echo 
$zeile->link;
echo 
"</b></p>";
}
}
$db->close;

}



?>
</p>
</section>
</body>
fehlercode:
Fatal error: Uncaught Error: Call to a member function fetch_object() on boolean in C:\WTServer\WWW\suche\test3.php:37 Stack trace: #0 {main} thrown in C:\WTServer\WWW\suche\test3.php on line 37

gruss micha
Mit Zitat antworten
  #7 (permalink)  
Alt 23-03-2017, 14:44
bandit600
 Registrierter Benutzer
Links : Onlinestatus : bandit600 ist offline
Registriert seit: Jan 2010
Beiträge: 182
bandit600 befindet sich auf einem aufstrebenden Ast
Standard

Lass dir mal $sql anzeigen und die Blanks bei or sind immer noch nicht drin.

Und lass dir mal den Fehler von der DB anzeigen:

PHP-Code:
$ergebnis $db->query($sql)
  or die (
"SQL: $sql <br>Error: " $db->error); 

Geändert von bandit600 (23-03-2017 um 15:10 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 23-03-2017, 15:14
hippo21
 Registrierter Benutzer
Links : Onlinestatus : hippo21 ist offline
Registriert seit: Jun 2016
Beiträge: 14
hippo21 befindet sich auf einem aufstrebenden Ast
Standard

hallo bandit
was sind blanks ?

und der inhalt von echo $sql ist
PHP-Code:
SELECT FROM linkliste WHERE  .keywort like '%haus%'
und ich hatte wirklich nach haus gesucht. also das freud mich schon das es bis dahin schonmal funktioniert
gruss micha
Mit Zitat antworten
  #9 (permalink)  
Alt 23-03-2017, 15:48
hippo21
 Registrierter Benutzer
Links : Onlinestatus : hippo21 ist offline
Registriert seit: Jun 2016
Beiträge: 14
hippo21 befindet sich auf einem aufstrebenden Ast
Standard

Achso noch der fehlercode von der DB
Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'like '%hund%'orkeywort like '%haus%'.' at line 1
Mit Zitat antworten
  #10 (permalink)  
Alt 23-03-2017, 16:47
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 451
mermshaus wird schon bald berühmt werden
Standard

Blanks sind Leerzeichen. Nicht "or", sondern " or ".

Zudem passt deine String-Verkettung nicht:

PHP-Code:
$sql " SELECT * FROM linkliste WHERE  .$abfrage.  "
Richtig ist eine dieser Varianten:

PHP-Code:
$sql "SELECT * FROM linkliste WHERE $abfrage"
PHP-Code:
$sql "SELECT * FROM linkliste WHERE " $abfrage
Mit Zitat antworten
  #11 (permalink)  
Alt 29-03-2017, 19:35
hippo21
 Registrierter Benutzer
Links : Onlinestatus : hippo21 ist offline
Registriert seit: Jun 2016
Beiträge: 14
hippo21 befindet sich auf einem aufstrebenden Ast
Standard

Hallo
Der code funktioniert soweit .

Ich wollte ihn jetzt einstellen, sodas andere ihn auch nutzen können. Aber vorher wollte ich noch das linkinjektion problem angehen. und schon gehts wieder nicht.PHP]<section>
<form method="get">
<input type="text" class="suchfeld" name= "search" />
<input type="submit" class="suchbutton" name= "Suche" />

<form>
<p>
<?php
if (isset($_GET["search"])){
$suchwort = mysqli_real_escape_string ($_GET['search']);

$abfrage = "";

echo "$suchwort";

$suchwort =explode(" ", $suchwort);
for ($i = 0; $i < sizeof($suchwort); $i++)

{
$abfrage .= "keywort like '%" . $suchwort[$i] . "%'";


if($i < (sizeof($suchwort) - 1)) {
$abfrage .=" or ";

}
}



$db = @new mysqli ( 'localhost', 'root', '', 'suche');
if (mysqli_connect_errno() == 0)
echo "Die datenbank verbindung hat geklappt";
{
$sql = "SELECT * FROM linkliste WHERE " . $abfrage; ;
echo "$sql";

$ergebnis = $db->query($sql)

or die ("SQL: $sql <br>Error: " . $db->error);


while ($zeile = $ergebnis->fetch_object()) {
echo "<p>";
echo $zeile->linknr;
echo "&nbsp;&nbsp";
echo $zeile->keywort;
echo "&nbsp &nbsp<b>";
echo $zeile->link;
echo "</b></p>";
}
}
$db->close;

}



?>
</p>
</section>[/PHP]

fehlermeldung:
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\WTServer\WWW\suche\index.php on line 27

Bei php 5.5. funktionirt das noch ( ohne (i))
gruss micha
Mit Zitat antworten
  #12 (permalink)  
Alt 29-03-2017, 21:19
bandit600
 Registrierter Benutzer
Links : Onlinestatus : bandit600 ist offline
Registriert seit: Jan 2010
Beiträge: 182
bandit600 befindet sich auf einem aufstrebenden Ast
Standard

Man darf aber auch mal die Doku bemühen!

Siehe PHP: mysqli::real_escape_string - Manual
Mit Zitat antworten
  #13 (permalink)  
Alt 02-04-2017, 12:11
hippo21
 Registrierter Benutzer
Links : Onlinestatus : hippo21 ist offline
Registriert seit: Jun 2016
Beiträge: 14
hippo21 befindet sich auf einem aufstrebenden Ast
Standard

Hallo nochmal

Allso ich raffs nicht.

Erwartet mysqli_real_escape_string immer 2 Variable??? Aber ich habe doch nur eine ( Get ... ). Die erklarung auf deiner verlinkten seite verstehe ich nicht.

Grus Micha
Mit Zitat antworten
  #14 (permalink)  
Alt 02-04-2017, 18:02
bandit600
 Registrierter Benutzer
Links : Onlinestatus : bandit600 ist offline
Registriert seit: Jan 2010
Beiträge: 182
bandit600 befindet sich auf einem aufstrebenden Ast
Standard

Beachte doch mal die Beispiele in der Doku, was anderes könnten wir dir auch nicht schreiben.
Mit Zitat antworten
  #15 (permalink)  
Alt 02-04-2017, 20:11
hippo21
 Registrierter Benutzer
Links : Onlinestatus : hippo21 ist offline
Registriert seit: Jun 2016
Beiträge: 14
hippo21 befindet sich auf einem aufstrebenden Ast
Standard

Also ich verstehe das Beispiel so

PHP-Code:
$city mysqli_real_escape_string($link$city); 
$link ist die datenbank verbindung. Die habe ich ja nicht, den die kommt ja erst später. und das würde keinen sinn machen. $city ist eigentlich eine feste größe die unabhängig von sonstigen werten hier durch einen wert ergänzt wird.

Ich brauche aber doch nur den get wert. Miuss ich die datenbank verbindung vorher machen. aber das ist ja eigentlich blödsinn.
Mein neuster versuch ist also dieser
PHP-Code:
$suchwort mysqli_real_escape_string ($_GET['search'], $suchwort); 
Aktuelle felermeldung
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, string given in C:\WTServer\WWW\suche\index.php on line 27


Immer hin nur noch einfehlender Parameter . Also Ich glaube das dies an der get Übergabe liegt . Nur ich habe kein ahnung wieso.

gruss aus Kaiserslautern
Micha
Mit Zitat antworten
Antwort

Lesezeichen


LinkBacks (?)
LinkBack to this Thread: https://www.php-resource.de/forum/php-developer-forum/105932-suchscript-funktioniert-nicht.html
Erstellt von For Type Datum
php Suchscript funktioniert nicht This thread Refback 02-04-2017 11:48

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bildupload funktioniert nicht OliOli PHP Developer Forum 10 25-11-2008 19:49
$_REQUEST funktioniert nicht ThePro PHP Developer Forum 18 15-04-2006 03:57
funktioniert nicht :-( fragezurseite PHP Developer Forum 4 24-05-2004 18:05
Im PHP Suchscript nicht lesbare files überspringen... eftos Apps und PHP Script Gesuche 0 17-02-2003 09:33
fwrite funktioniert nicht... chrisonline PHP Developer Forum 1 21-09-2002 23:55

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:58 Uhr.