2016-07-29 25 views
0

Also ich versuche, eine Suchfunktion in PHP mit mySQL zu erstellen und ging durch einen Syntaxfehler, Ok, also habe ich keine Idee, wo behoben es kam, um genauer zu sein der Fehler sagt einPHP-Suche mit mySQL-Programm Fehler

"Syntaxfehler, unerwartet 'if'"

und es kommt von if (resault- $> num_rows> 0). Kann mir jemand erklären wo ich schief gegangen bin und/oder einen möglichen Weg dies zu lösen? Nachdem ich Ihre Antworten gelesen hatte, änderte ich einige meiner Parameter, weil ich erkannte, dass Sie mit meinem Code recht hatten. Ich weiß immer noch nicht, worum es bei dem Fehler ging.

<?php 
if ($conn->connect_error) { 
    @die("Connection failed: " . $conn->connect_error); 
} 

if (isset($_GET["P"])) { 
    $conn = new mysqli($host, $user, $pass, $db_name); 
    $resault = $conn->query("SELECT title,field_paint_efficeincy__value FROM node_revision, field_data_field_paint_efficeincy_ WHERE title LIKE '$_GET[P]%'"); 
    echo $resault->num_rows; 


    if ($resault->num_rows > 0) { 
    while($row = $resault->fetch_assoc { 
    echo $row['*'] . "<br />"; 
    } 
} 
$conn->close(); 
} 
?> 


<form action="<?php echo $_SERVER['PHP_SELF']?>" method="get"> 
    PARAMETER: <input type="text" name="P" value="" /> <br/> 
    <input type="submit" value="Υπολογισμός" name="sub"> 
</form> 

FIXED

Ok, damit ich es fixiert und es funktioniert und nach Antworten zu lesen ich einige meiner Parameter geändert, weil ich Sie recht über meine code.I noch nicht wissen, was realisiert wurden Der Fehler war ungefähr.

+0

Sie würden sich helfen, indem Sie anständige Einrückung. Es ist viel einfacher, Probleme mit korrekt eingerücktem Code zu erkennen. – Utkanos

Antwort

2

ändern

while($row = $resault->fetch_assoc { 

Um

while($row = $resault->fetch_assoc()) { 

Für mehr Informationen, klicken fetch_assoc

Erläuterung:

Wie Sie kommentiert @spirytusrektus Antwort: "Ich machte die ganze Linie einen Kommentar, immer noch der gleiche Fehler."

Also, nach mir. Sie tat:

if ($resault->num_rows > 0) { 
    //while($row = $resault->fetch_assoc { 
    echo $row['*'] . "<br />"; 
    } 
} 

Also, Sie kommentierte While loop aber nicht closing braces der while-Schleife kommentiert. Deshalb gleichen Fehler "

"Syntaxfehler, unerwartete 'if'"

So kommen, wenn Sie es wirklich testen möchten. Comment sowohl a) while loop; und b) closing braces} der während Schleife.

Wie,

if ($resault->num_rows > 0) { 
    //while($row = $resault->fetch_assoc { 
    echo $row['*'] . "<br />"; 
    //} 
} 

Aber, die Sie nicht muss das tun.

Just, fügen ()) in while($row = $resault->fetch_assoc {

wie

while($row = $resault->fetch_assoc()) {

+0

Es ist nicht so, weil diese Gruppe von Zeilen eine Kopie einfügen von einem anderen Code ist und ich habe gerade vergessen, diese einzufügen.Ebenso verursacht es einen Fehler in einer Zeile, die nicht existiert, was bedeutet, dass der Fehler von einem der vorherigen kommt Linien, aber ich kann nicht welche finden. –

+0

So weit ich sehe, hat keine Zeile einen Fehler außer der Zeile, die in 'fetch_assoc()' gefunden wurde. @GeorgeNostradamos –

0
while($row = $resault->fetch_assoc { 

Sie hier ein ()) fehlt. Wie Utkanos kommentierte, wird eine anständige Einrückung Ihnen helfen, Ihre Tippfehler zu erkennen.

UPDATE:

<? 
$conn = @new mysqli('localhost', 'fake_user', 'my_password', 'my_db'); 

if ($conn->connect_error) { 
    @die("Connection failed: " . $conn->connect_error); 
} 

if (isset($_GET["P"])) { 
    $conn = new mysqli($host, $user, $pass, $db_name); 
    $resault = $conn->query("SELECT title,field_paint_efficeincy__value FROM node_revision, field_data_field_paint_efficeincy_ WHERE title LIKE '$_GET[P]%'"); 
    echo $resault->num_rows; 


    if ($resault->num_rows > 0) { 

     while($row = $resault->fetch_assoc()) { 

      echo $row['*'] . "<br />"; 
     } 
    } 

    $conn->close(); 
} 
?> 


<form action="<?php echo $_SERVER['PHP_SELF']?>" method="get"> 
    PARAMETER: <input type="text" name="P" value="" /> <br/> 
    <input type="submit" value="????????µ??" name="sub"> 
</form> 

Ich sehe keine Syntaxfehler in diesem Code. Probieren Sie diesen Codeblock mit Ihren Verbindungsparametern aus. Wenn das nicht hilft, versuchen Sie, den Code neu zu schreiben.

+0

Ich machte die ganze Linie einen Kommentar, immer noch den gleichen Fehler –

+0

@GeorgeNostradamos aktualisiert meine Antwort, schau es dir an. – tyb

0

Verwenden $conn>error; zu printerror

$conn->query("Your query") or print_r($conn->error); 

Sie haben Fehler in dieser Zeile

while($row = $resault->fetch_assoc { // forget to use()) 
     echo $row['*'] . "<br />";// $rwo['*']; is nothing 
     } 

Es

while($row = $resault->fetch_assoc()) { 
     echo "<pre>"; print_r($row) . "<br />"; 
     } 

Auch in Sie sollten sql Sie $_GET[P] verwendet. Es sollte $_GET['P'] sein;

Verwendung dieses code

<?php 
if(isset($_GET['P'])){ 
//echo $_GET['P']; 

$sql = "SELECT title,field_paint_efficeincy__value FROM node_revision, field_data_field_paint_efficeincy_ WHERE title LIKE '".$_GET["P"]."%'"; 
// echo $sql;die;//just to check query 
$conn = new mysqli($host, $user, $pass, $db_name); 
    $resault = $conn->query($sql) or print_r($conn->error); 
    if ($resault->num_rows > 0) { 
    while($row = $resault->fetch_assoc()) { 
    echo "<pre>";print_r($row); 
    } 
} 
else{ 
    echo "no match found"; 

} 
$conn->close(); 
}?> 

Auch Sie sind zwei table haben, weil Sie zwei Tabellen Namen nach FROM in Ihrer Abfrage node_revision und field_data_field_paint_efficeincy_ die zweite Hälfte Name der Tabelle aussieht. Ist auch title ist in beiden Tabelle oder nur in einem vorhanden, erhalten Sie auch ambiguous Feld error, wenn beide Titel hat