2013-12-24 2 views
0

Что я здесь делаю неправильно? Все данные были разделены до тех пор, пока я не добавлю последнюю часть кода, инструкцию IF() {}. Я хочу сделать это, если бы информация была отправлена ​​правильно, так как она сказала СПАСИБО !, иначе, отобразите ошибку, которую я установил.PDO, если проверка статуса

<form method="POST"> 
    <input type="text" name="username" placeholder="username"><br /> 
    <input type="password" name="password" placeholder="password"><br /> 
    <input type="submit"> 
</form> 

<?php 
    if(isset($_POST['username'], $_POST['password'])){ 
     require 'core/db.php'; 

     $conn = dbConnect()->prepare("INSERT INTO users (username, password) VALUES (?,?)"); 

     $conn->bindParam(1, $_POST['username']); 
     $conn->bindParam(2, $_POST['password']); 
     $conn->execute(); 

     if($conn === true){ 
      echo 'Thanks!'; 
      header('Location: index.php'); 
      exit; 
     } else{ 
      echo 'something went wrong'; 
     } 
    } 
?> 

ответ

2

Это не $conn, что вы должны проверить для true против. $conn - пример PDOStatement. Вместо этого вы должны проверить возвращаемое значение $conn->execute().

if($conn->execute() === true){ 
    header('Location: index.php'); 
    exit; 
} else{ 
    echo 'something went wrong'; 
} 

Как @mjayt указал вам не должен выводить содержимое перед тем header вызова. Вы можете определенно вывести с использованием выходной буферизации ob_start()...ob_end_flush(), но я не предполагаю, что echo действительно необходим здесь.

+0

@ jeroen, 'public bool PDOStatement :: execute ([array $ input_parameters])' (http://www.php.net/manual/en/pdostatement.execute.php), я что-то упустил? – vee

+0

Забудьте свой комментарий, уже слишком поздно, извините ... – jeroen

2
if($conn->execute()){ 
    header('Location: index.php?success=true'); 
    exit; 
} else{ 
    echo 'something went wrong'; 
} 

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

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