2016-11-05 2 views
0

Итак, как говорится в заголовке, я хочу узнать, как я могу сравнить строку в базе данных SQL с строкой PHP.Как сравнить строку в базе данных SQL с переменной PHP

<!DOCTYPE html> 
<html> 

<head> 
<title>Processing Request</title> 
<link rel="Stylesheet" href="style.css" type="text/css" /> 
</head> 

<body> 
<h1>Account Creation</h1> 
    <h3> 

    <?php 
    $dbhost = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $connect = mysqli_connect("$dbhost", "$username", "$password"); 
    $db = "accounts"; 

    if (!$connect){ 
     die("ERROR: Database connection failed: " . mysqli_connect_error()); 
    } 

    mysqli_select_db($connect, $db); 

    $makeUser = $_POST["makeUser"]; 
    $makePass = $_POST["makePass"]; 
    $sql = "INSERT INTO accounts (username, password) VALUES ('$makeUser', '$makePass')"; 


    if("SELECT username FROM accounts WHERE username = '$makeUser'"){ 

Строка кода выше, где я пытаюсь сравнить значение (из столбца «имя пользователя» в таблице «счета») в моей SQL базы данных в строку, пользователь ввел для создания учетной записи ($ makeAccount). Этот конкретный фрагмент кода должен сообщать пользователю, если пользовательское имя, которое они пытаются установить для своей учетной записи, уже было принято.

Однако каждый раз, когда я запускаю этот код (и вводим имя пользователя в форму, которую я могу визуально видеть в моей базе данных, не принимается), он по-прежнему говорит, что имя пользователя уже принято, хотя это определенно нет.

 header("Location: createaccount.php?status=userTaken"); 
    } 
    else{ 
     mysqli_query($connect, $sql); 
     echo "Account creation was succesful!"; 
    } 

    mysqli_close($connect); 
    ?> 

    Click <a href="index.php">here</a> to login. 

    </h3> 
    </body> 
</html> 

Благодарим вас, все ответы представлены.)

P.S. Это первая программа, которую я пишу на PHP, и в первый раз я использую базу данных SQL, поэтому, пожалуйста, старайтесь держать ее простой и понятной.

P.S.S Я пробовал множество решений, все без успеха.

+1

Что вы ожидаете от 'if' условии, что имеет какой-то запрос ? – RST

+0

Вы не можете просто поместить SQL в оператор 'if()'. Вам нужно вызвать 'mysqli_query()' для выполнения запроса базы данных и 'mysqli_fetch_assoc()', чтобы получить ряд результатов. Это возвращает ассоциативный массив, и вы можете получить доступ к выбранным значениям столбца из него. Документация mysqli имеет примеры, и вы должны быть в состоянии найти много учебников в Интернете. – Barmar

ответ

0

Пожалуйста, измените если заявление вашего сравнения

из

if("SELECT username FROM accounts WHERE username = '$makeUser'"){ 

в

if(mysqli_query("SELECT username FROM accounts WHERE username = '$makeUser'")){ 
0
$sql = mysqli_query("SELECT username FROM accounts WHERE username = '$makeUser'"); 
if(mysqli_num_rows($sql) > 0) 
{ 
    //exists 
} 
else 
{ 
    //does not exist 
} 
+0

Do _not_ предлагает смешивать 'mysql_ *' вызовы API с вызовами 'mysqli_ *' API. Первый из них устарел и не будет работать с последним. –

+0

@RickJames yeah mybad –

Смежные вопросы