Ошибка MySQL: Неизвестный столбец в разделе where

<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-Error: Неизвестный столбец «dompol171» в разделе «where» .
Поэтому он сравнивает имя пользователя, которое я ввел с самим столбцом «имя_пользователя». Я продолжаю волноваться … потому что я понятия не имею, как сравнивать его по-другому!

Solutions Collecting From Web of "Ошибка MySQL: Неизвестный столбец в разделе where"

Вы допустили ошибку в том, где статья, это:

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

Синтаксис: Where "column" = "value"

У вас есть свои параметры назад. Имя столбца всегда идет до значения:

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

Это не оператор сравнения, как в PHP, где операнды могут быть по обе стороны от уравнения.

Здесь происходит то, что значение $_POST['username'] считается столбцом, так как вы его не процитировали, т.е. задали его как строку. Поэтому скажите, что имя пользователя musa, его попытка сравнить столбцы musa с столбцом user_name (и этот столбец не существует). Должен быть

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

Попробуйте использовать:

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

Запрос требует небольшой корректировки, начиная с:

 $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!"; } } 

Попробуйте использовать это:

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