2013-05-17 24 views
1

我是新來的使用PHP和MySQL數據庫。我試圖做一個用戶輸入用戶名(UN)進入我的網站的這一部分。我有一個mySQL DB(測試)用戶名爲「測試」。 我知道我連接好,因爲我通過創建一個簡單的頁面來打開數據庫並列出所有用戶(來自聯合國領域)或者選擇一個特定的用戶來測試它,然後我創建了一個名爲「input.php」的頁面,用於獲取輸入的測試。由於這裏看到>如何使用php/sql將輸入與mysql數據進行比較?

<html> 
<body> 
<form action="test.php" method="get"> 
UN: <input type="text" name="U"> 
<input type="submit"> 
</form> 
</body> 
</html> 

從上面的輸入變爲「test.php的」當在我的數據庫與當前數據覈對以下。

<?php 
$hostname = "test.db.some#.somehost.com"; 
    $username = "test"; 
    $dbname = "test"; 
$password = "password"; 
$usertable = "test"; 
$yourfield = "UN"; 
    mysql_connect($hostname, $username, $password) OR DIE ("Unable to 
     connect to database! Please try again later."); 
    mysql_select_db($dbname); 
$query = "SELECT * FROM $usertable WHERE $yourfield = $_GET["U"]"; 
    $result = mysql_query($query); 
    if ($result) { 
     while($row = mysql_fetch_array($result)) { 
       $name = $row["$yourfield"]; 
       echo "Hello: $name<br>"; 
      } 
    } 
    else { 
     echo "User dosen't exit!"; 
    } 
    mysql_close(); 
?> 

這是我的錯誤> *解析錯誤:語法錯誤或者意想不到的''',期待T_STRING或T_VARIABLE或T_NUM_STRING行20上的/home/content/81/11107981/html/test.php *

我知道我很近,但我想要雪茄。 ;)

回答

0

我認爲問題是,你沒有在查詢中逃脫報價:

嘗試以下操作:

$u = $_GET['u']; 
$query = "SELECT * FROM $usertable WHERE $yourfield = " . $u; 
1

mysql_ *已被棄用。你應該避免它們。

變化

mysql_connect($hostname, $username, $password) OR DIE ("Unable to 
    connect to database! Please try again later."); 

$connection = mysql_connect($hostname, $username, $password) OR DIE ("Unable to 
connect to database! Please try again later."); 

$query = "SELECT * FROM $usertable WHERE $yourfield = $_GET["U"]"; 

$query = "SELECT * FROM $usertable WHERE $yourfield = '".$_GET["U"]."'"; 

甲第二

mysql_close(); 

mysql_close($connection); 
+0

mysql_ *已棄用爲PHP 5.5.0,並將在未來刪除。 – ontananza

+0

是的,你說得對。 – Sumoanand

+0

哇,感謝您的快速反應#1:D#2它現在可以工作。是的,我必須使用我的虛擬主機爲我提供的一個使用mysql代碼的舊例子。梅多多噶瑪對你微笑。 :) –

0

你應該寫這樣的查詢,而不是:

$query = "SELECT * FROM $usertable WHERE $yourfield = '" . $_GET["U"] . "'"; 

或者你可以寫這樣的:

$query = "SELECT * FROM $usertable WHERE $yourfield = '{$_GET["U"]}'"; 
0

你的第一個問題已經解決了,但這裏是你的解決方案ND的幫助下沿問題把這段代碼轉換到mysqli的

<?php 
$hostname = "test.db.some#.somehost.com"; 
$username = "test"; 
$dbname = "test"; 
$password = "password"; 
$usertable = "test"; 
$yourfield = "UN"; 
$connect = mysqli_connect($hostname, $username, $password) OR DIE ("Unable to 
    connect to database! Please try again later."); 
mysqli_select_db($dbname); 

/* You can combine the above two lines in oen in mysqli by giving db name as fourth parameter 
mysqli_connect($hostname, $username, $password, $dbname) 

*/ 

$query = "SELECT * FROM $usertable WHERE $yourfield = $_GET["U"]"; 
$result = mysqli_query($query); 
$rowSelected = mysqli_num_rows($result); 
if ($rowSelected) { 
    while($row = mysqli_fetch_array($result)) { 
      $name = $row["$yourfield"]; 
      echo "Hello: $name<br>"; 
     } 
} 
else { 
    echo "User dosen't exit!"; 
} 
mysqli_close($connect); 
?> 

mysql_querymysqli_query將返回資源..這將是真正的不管行是否被提取或不..what你需要檢查是否有是任何正在實際獲取的數據..所以使用mysqli_num_rows(mysqli version of mysql_num_rows)

相關問題