2016-07-29 59 views
0

所以我想創建使用MySQL的PHP​​中的搜索功能,並通過一個語法錯誤,好了,所以我在那裏固定它是從哪裏來的不知道去了,更具體的錯誤說一與MySQL程序錯誤PHP搜索

語法錯誤,意想不到的 '如果'」

它來自IF($ resault-> NUM_ROWS> 0)。有人可以向我解釋我錯誤的作品和/或可能的解決方法嗎?在閱讀你的答案後,我改變了一些參數,因爲我意識到你對我的代碼是正確的。我仍然不知道錯誤是什麼。

<?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> 

固定

好了,所以我固定它和它的作品,閱讀你的答案後,我改變了我的一些參數,因爲我意識到你是對我的code.I仍然不知道是什麼錯誤是關於。

+0

你會幫助自己通過使用體面的縮進。使用正確縮進的代碼更容易發現問題。 – Utkanos

回答

2

變化

while($row = $resault->fetch_assoc { 

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

欲瞭解更多信息,請點擊fetch_assoc

說明:

正如,你評論@spirytusrektus答案的答案:「我對整行進行了評論,仍然是同一個錯誤。」

因此,根據我的。你們這樣做:

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

所以,您的評論While loop但不評論closing braces while循環。這就是爲什麼同樣的錯誤來了「

‘語法錯誤,意想不到的‘如果’’

所以,如果你真的想對它進行測試。評論既是一個)while loop;和b),而closing braces}循環。

一樣,

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

,你沒有需要這樣做。

只是,在while($row = $resault->fetch_assoc {

添加())

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

+0

並非如此,因爲這組行是從另一個代碼複製粘貼的,我只是忘記粘貼這些行。無論哪種方式,它都會導致不存在的行中的錯誤,這意味着錯誤來自之前的一行線,但我找不到哪一個。 –

+0

正如我所見,除'fetch_assoc()'中檢測到的行之外,沒有行發生錯誤。 @GeorgeNostradamos –

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

你在這裏缺少一個())。正如Utkanos評論的那樣,體面的縮進將幫助您檢測您的打字錯誤。

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> 

我沒有看到這個代碼中的任何語法錯誤。用你的連接參數試試這個代碼塊。如果這沒有幫助,請嘗試重寫您的代碼。

+0

我發了整條評論,還是一樣的錯誤 –

+0

@GeorgeNostradamos更新了我的回答,看看它。 – tyb

0

使用$conn>error;printerror

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

你有錯誤在這行

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

應該

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

另外,在你你用$_GET[P]sql。它應該是$_GET['P'];

使用本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(); 
}?> 

也有兩個table,因爲你以後有兩個表的名字從你的查詢node_revisionfield_data_field_paint_efficeincy_第二個看起來表的一半名稱。 title也出現在這兩個表中或只在一個你也將得到ambiguous字段error,如果兩者都有'標題