2015-05-03 3 views
2

В настоящее время я пытаюсь получить определенного пользователя на основе номера ученика и пароля ... Проблема заключается в том, что mysqli_query сохраняет возвращаемый false (?) Оператор. Хотя я проверил запрос, протестировав его в PHPMyAdmin. Вот мой запрос:Mysqli_query SELECT возвращает false

$number = $_POST['number']; 
$password = $_POST['password']; 

$sql = "SELECT studentNumber FROM student where studentNumber = '$number'" ; 
$result = mysqli_query($conn, $sql) or die(mysqli_error());; 

if(!$result){ 
    echo "FAIL"; 
} 
else if($result > 0){ 
    header("register.html");  
}else{ 
    $sql = "INSERT INTO 'sampleDB'.'student'('userID', 'studentNumber', 'password') VALUES ('', $number, $password)"; 
    header("login.html"); 
} 

Вот мое подключение часть кода:

$conn = new mysqli($servername, $username, $password); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
+0

Кажется, причина не соединится, потому что я не включил DBName в моей связи, когда я создал Mysqli объект ... После включения DBName теперь проходит через установочную часть. Хотя мой запрос на ввод, похоже, вообще не работает – user3580218

ответ

1

Вы должны проверить, сколько строк в результате запроса сделал выход через num_rows, затем после этого сделайте несколько вставок, если его нуль.

Обратите внимание, что кавычки столбцов на самом деле кавычку, а не одиночные кавычки:

$number = $_POST['number']; 
$password = $_POST['password']; 

// checking 

$sql = 'SELECT studentNumber FROM student WHERE studentNumber = ?'; 
$select = $conn->prepare($sql); 
$select->bind_param('s', $number); 
$select->execute(); 
// if there is no student number, register 
if($select->num_rows > 0) { 
    // there is student number found 
    header('Location: index.html'); exit; 

} else { 

    // there is NO student number found 
    $sql = 'INSERT INTO sampleDB.student(userID, studentNumber, password) VALUES (NULL, ?, ?)'; 
    $insert = $conn->prepare($sql); 
    $insert->bind_param('ss', $number, $password); 
    $insert->execute(); 

    header('Location: login.html'); 
} 

Sidenote: Вы коды подключения, кажется, быть усечен по этому вопросу. Не забудьте добавить имя своей базы данных в соединение:

$conn = new mysqli($servername, $username, $password, $database_name); 
+0

Вставка вы указали исправленную мою ошибку thanks = D – user3580218

+0

@ user3580218 да, вы должны использовать подготовленные инструкции, в настоящее время то, что у вас сейчас есть, уязвимо для SQL-инъекции. рад, что это помогло – Ghost

+0

Я буду держать это в виду = D – user3580218

0
$sql = "SELECT studentNumber FROM student where studentNumber = '$number'" ; 

Изменения в

$sql = "SELECT studentNumber FROM student where studentNumber = '".$number."'" ; 
0

Извлеките результат первым и используйте его в своем состоянии.

$result2 = mysql_fetch_array($result); 
Смежные вопросы