2014-01-13 70 views
0
<div class="ui-widget"> 

<form method="POST"> 
<?php 

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

$connection = mysql_connect('localhost', 'root', '1234'); 
mysql_select_db('hoppers'); 

    $query = "SELECT user_name FROM users WHERE {$_POST['username']} = user_name"; 
    $result = mysql_query($query) or die ("MySQL-Error: " . mysql_error()); 
    $row = mysql_fetch_array($result); 


if($row = TRUE){ 

     $present = $row['user_name']; 
     echo $present; 

    }else{ 
      echo "This User does not exist!"; 
     } 
} 
?> 

<label for="tags">Username: </label> 
<input type="text" id="tags" name = "username"> 
<input type="submit" name="search" value="Suchen!"> 
</form> 
</div> 

所以我一直都想與未知列在此錯誤消息:的MySQL錯誤:「where子句」未知列「dompol171」。
因此,它將我輸入的用戶名與列「user_name」本身進行比較。我一直嚇壞了......因爲我不知道如何以不同的方式來比較它!MySQL的錯誤:在where子句

+1

哪裏是所有關於使用mysqli的強制性的東西嗎?是不是mysql_query()仍然被棄用? – 2014-01-13 21:59:49

回答

0

嘗試使用:

$query = "SELECT user_name FROM users WHERE user_name = '{$_POST['username']}'"; 
+0

這給了我這個錯誤代碼:解析錯誤:語法錯誤,意外的''(T_ENCAPSED_AND_WHITESPACE),期待標識符(T_STRING)或變量(T_VARIABLE)或編號(T_NUM_STRING) – user3174027

+0

@ user3174027我的糟糕的編輯答案。 – cubitouch

+0

所以這不會改變任何東西......它仍然不會比較! – user3174027

0

查詢需要稍作調整,距離:

$query = "SELECT user_name FROM users WHERE {$_POST['username']} = user_name"; 

到:

$query = "SELECT user_name FROM users WHERE user_name = '{$_POST['username']}'"; 

裹在單引號的價值。

這個更新PHP將驗證傳回的數據:

<?php 
if(isset($_POST['search'])){ 

$connection = mysql_connect('localhost', 'root', '1234'); 
mysql_select_db('hoppers'); 

$query = "SELECT user_name FROM users WHERE user_name = '{$_POST['username']}'"; 
$result = mysql_query($query) or die ("MySQL-Error: " . mysql_error()); 

// count # of rows returned by DB query 
$num_users = mysql_num_rows($result); 

// If more than 0 
if ($num_users > 0){ 
    // Success! 
    $row = mysql_fetch_array($result); 
    var_dump($row); 
} else { 
    // No results returned 
    echo "This User does not exist!"; 
} 


} 
+0

不是真的,單引號有衝突。 –

+0

在這種情況下不存在衝突......您是否在引用$ _POST的意思? {}括號可以防止衝突。 –

+0

很高興知道,對不起。 –

0

你使where子句中出錯,它是:

WHERE user_name = {$_POST['username']}";

的syntaxe是:Where "column" = "value"

0

你有你的參數倒退。列名總是進入前值:

$query = "SELECT user_name FROM users WHERE user_name = {$_POST['username']}"; 

這是不是一個比較運營商像PHP在操作數可以是在等式的兩邊。

+0

你確定嗎? – Musa

0

這裏發生的事情是$_POST['username']的值因爲您沒有引用它而被視爲一列,即將其設置爲字符串。所以說用戶名是musa,它試圖比較列musa和列user_name(並且該列不存在)。它應該是

$query = "SELECT user_name FROM users WHERE 'some username' = user_name"; 
0

嘗試使用此:

$username = $_POST['username']; 
$query = "SELECT user_name FROM users WHERE user_name='" . $username . "'";