2012-04-25 22 views
0

我試圖找出如何使我的search.php腳本與MySQL的工作。我無法將信息顯示出來。不確定問題出在哪裏。Seach.php不工作,並沒有顯示任何結果

第1頁:

<form action="search_result.php" method="GET"> 
    <input type="text" name="reg" /> 
    <input type="submit" value="Search" /> 
</form> 

第2頁:

<?php 
$host="localhost"; 
$username="XXXXXXXXXXX"; 
$password="XXXXXXXXXXX"; 
$db_name="XXXXXXXXXXXX"; 
$tbl_name="reg_add"; 
mysql_connect("$host", "$username", "$password") or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 


$record = $_POST['record']; // if coming from e.g. a form 
$result=mysql_query(" SELECT * FROM reg_add WHERE reg='" . mysql_real_escape_string($record) . "'"); 


$row = mysql_fetch_assoc($result); 
$first_name = $row['first_name']; 
$last_name = $row['last_name']; 
$reg = $row['reg']; 
?> 

<input name="reg" value="<? echo "$record" ?>"> 

<input name="first_name" value="<? echo "$first_name" ?>"> 

<input name="last_name" value="<? echo "$last_name" ?>"> 
+0

當您在查詢中使用它時,「$ record」似乎不會被設置。檢查'$ result',如果它的false調用'mysql_error()'來查看發生了什麼錯誤。 – drew010 2012-04-25 23:08:59

+1

確保所有XXXXXXXXXXXX都與實際值匹配 – 2012-04-25 23:09:15

+0

我發現的第一個問題是您正在使用(即將被棄用)['mysql_ *'functions](http://us.php.net/manual/en/mysqlinfo.api .choosing.php)。使用'mysqli_ *'或PDO。 – PeeHaa 2012-04-25 23:12:56

回答

0

您的形式是GET方法,並在你的PHP你這樣做:

$record = $_POST['record']; // if coming from e.g. a form 

如果您的表單具有GET方法,您將如何獲得POST ['record']?

我猜你應該或更改您的形式:

method="POST" 

或PHP更改$記錄:

$record = $_GET['record']; 

試試這個版本:

您構成:

<form action="search_result.php" method="POST"> 
    <input type="text" name="reg" id="reg" /> 
    <input type="submit" name="Submit" id="Submit" value="Search" /> 
</form> 

search_result.php:

<?php 

$host  ="localhost"; 
$username ="XXXXXXXXXXX"; 
$password ="XXXXXXXXXXX"; 
$db_name ="XXXXXXXXXXXX"; 
$tbl_name ="reg_add"; 

/* Connect to MySQL database */ 
mysql_connect("$host", "$username", "$password") or die("Error connecting to database"); 
mysql_select_db("$db_name")or die("Error selecting database"); 

$error = ''; 

if (isset($_POST['Submit'])) { 


    if (!empty($_POST['reg'])) { 

     $record = $_POST['reg']; // if coming from e.g. a form 

     $query = mysql_query("SELECT * FROM reg_add WHERE reg='" . mysql_real_escape_string($record) . "'"); 
     $result = mysql_num_rows($query); 

     if ($result != 0) { 

      $row = mysql_fetch_array($query); 

      $first_name = $row['first_name']; 
      $last_name = $row['last_name']; 
      $reg = $row['reg']; 

     } else { 

      $error = 'No result have been found!'; 

     } 

    } else { 

     $error = 'You have not entered the search field, <a href="javascript:history.back(1)">Go back</a>.'; 

    } 
} 

if (!empty($error)) { echo $error; } 
?> 


<input name="reg" value="<? echo $record; ?>"> 

<input name="first_name" value="<? echo $first_name; ?>"> 

<input name="last_name" value="<? echo $last_name; ?>"> 
+0

謝謝...我正在嘗試,但它不起作用.. – Erik 2012-04-26 14:16:15

0
mysql_connect("$host", "$username", "$password") 

不是你的問題,但沒有必要引號的變量:

mysql_connect($host, $username, $password); 
mysql_select_db($db_name); 

應設置變量$record有些ERE:

$record = $_POST['record']; // if coming from e.g. a form 
$result=mysql_query(" SELECT * FROM reg_add WHERE reg='" . mysql_real_escape_string($record) . "'"); 

這是錯誤的:

$first_name=mysql_result($result,"first_name"); 
$last_name=mysql_result($result,"last_name"); 
$reg=mysql_result($result,"reg"); 

而且應該是:

$row = mysql_fetch_assoc($result); 
$first_name = $row['first_name']; 
$last_name = $row['last_name']; 
$reg = $row['reg']; 

另外:你不應該使用mysql_* functions了。使用mysqli_*或PDO。

請記住,如果某些操作不起作用,您可以檢查mysql_error()以查看是否有錯誤進行查詢。

+0

感謝您的幫助。我上面更新了我的腳本,但仍然找不到結果。 – Erik 2012-04-25 23:59:02

+0

@Paul Btw,我*同意PDO在任何情況下都是更好的API選擇,但宣佈準備好的語句是解決所有轉義問題的方法在我眼中是錯誤的。尤其是考慮到默認情況下PDO使用直到最近才知道字符集的轉義函數(在5.3.6中增加了charset支持,我認爲你必須在DSN中明確指定它)來模擬預準備語句。另一方面,real_escape_string *是*字符集感知,如果你設置正確。 – NikiC 2012-04-25 23:59:30

+0

我用更正更新了我的問題。我仍然無法得到結果。我覺得我很親密。 – Erik 2012-04-26 00:01:19

0

mysql_result()的語法錯誤。按照manual,它應該是

串mysql_result(資源$結果,詮釋$行[,混合$場= 0])

這樣使用起來會像

的正確方法
mysql_result($result, 1, "first_name"); 
相關問題