2015-02-20 3 views
3

Я изучил MySQL, создал форму и работал с ней. Мне тогда сказали, что я должен делать это PDO с подготовленными заявлениями, поэтому я сделал некоторые исследования по этому вопросу и изменил свой код.Ввод данных из формы в базу данных PDO

У меня теперь есть код справа (я думаю), но я не могу понять, как данные вводятся. Как вы можете видеть в моем коде, у меня есть база данных, создающая строки, когда пользователь отправляет форму. Однако база данных просто подбирает все, что находится в пределах речевых знаков под //insert a row и //insert another row.

Например, прямо сейчас, если пользователь заполнил и отправил форму, независимо от того, какую информацию они вводят, я просто получаю «Joe» и «[email protected]» и т. Д., Которые отображаются в моей базе данных. Очевидно, мне нужны их ответы, иначе моя форма была бы невосприимчивой (как и представление данных). Разве я полностью пропустил знак или я пропустил что-то глупое? Я пытался изменить и исследовать, но боюсь. Действительно новый для всего этого.

ФОРМА:

<form action="testsubmit-pdo.php" method="post"> 
<label>Student Name :</label> 
<input type="text" name="stu_name" id="name" required="required"  placeholder="Please Enter Name"/><br /><br /> 
<label>Student Email :</label> 
<input type="email" name="stu_email" id="email" required="required" placeholder="[email protected]"/><br/><br /> 
<label>Student City :</label> 
<input type="text" name="stu_city" id="city" required="required" placeholder="Please Enter Your City"/><br/><br /> 
<input type="submit" value=" Submit " name="submit"/><br /> 
</form> 

PHP:

try { 
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 

// set the PDO error mode to exception 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

// prepare sql and bind parameters 
$stmt = $conn->prepare("INSERT INTO demo (stu_name, stu_email, stu_city) 
VALUES (:stu_name, :stu_email, :stu_city)"); 
$stmt->bindParam(':stu_name', $stu_name); 
$stmt->bindParam(':stu_email', $stu_email); 
$stmt->bindParam(':stu_city', $stu_city); 

// insert a row 
$stu_name = "Joe"; 
$stu_email = "[email protected]"; 
$stu_city = "Joeland"; 
$stmt->execute(); 

// insert another row 
$stu_name = "Mary"; 
$stu_email = "[email protected]"; 
$stu_city = "Maryland"; 
$stmt->execute(); 

echo "New records created successfully"; 
} 
catch(PDOException $e) 
{ 
echo "Error: " . $e->getMessage(); 
} 
$conn = null; 
+1

Это происходит потому, что вы не обновляете переменные информацией из массива '$ _POST'. Например, '$ stu_name = $ _POST [stu_name ']', если вход формы 'name =" stu_name "'. –

+0

Я действительно не вижу, какова ваша цель. Пожалуйста, покажите нам весь ваш код и какие результаты вы ожидаете? – Rizier123

+0

Теперь, когда вы разместили свою форму, прочитайте мой первый комментарий. –

ответ

5

Изменить это -

// insert a row 
$stu_name = "Joe"; 
$stu_email = "[email protected]"; 
$stu_city = "Joeland"; 
$stmt->execute(); 

// insert another row 
$stu_name = "Mary"; 
$stu_email = "[email protected]"; 
$stu_city = "Maryland"; 
$stmt->execute(); 

к этому -

// insert a row 
$stu_name = $_POST['stu_name']; 
$stu_email = $_POST['stu_email']; 
$stu_city = $_POST['stu_city']; 
$stmt->execute(); 

Ваша форма поместит значения в POST-массив PHP, и вы сможете получить к ним доступ по свойству name из формы.

+0

спасибо !! Это сработало отлично.Очень ценю всю вашу помощь; очень новичок в этом. – user2132851

+0

@ user2132851 FYI: http://php.net/manual/en/reserved.variables.post.php (Если у вас есть форма с методом get, вы можете получить к ней доступ с '$ _GET', если это метод post, это' $ _POST'; просто выполните 'print_r ($ _ POST);' чтобы увидеть структуру массива) – Rizier123

+0

Спасибо! Все становится немного более ясным. Я относительно хорош с HTML и CSS, но PHP и базы данных - это совершенно новый мир! – user2132851

2

Вы отправляете данные, введенные пользователем на свой PHP файл

<form action="some_php_file.php" method="post"> 
    <input type="text" name="stu_name"> 
    <input type="email" name="stu_email"> 
    <input type="text" name="stu_city"> 
    <input type="submit" name="submit" value="submit"> 
</form> 

и PHP кода, сначала нужно проверить, если кнопка отправить щелкают

//check if submit button is clicked 
    If(isset($_POST['submit'])){ 
    try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 

    // set the PDO error mode to exception 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    // prepare sql and bind parameters 
    $stmt = $conn->prepare("INSERT INTO demo (stu_name, stu_email, stu_city) 
    VALUES (:stu_name, :stu_email, :stu_city)"); 
    $stmt->bindParam(':stu_name', $stu_name); 
    $stmt->bindParam(':stu_email', $stu_email); 
    $stmt->bindParam(':stu_city', $stu_city); 

    $stu_name = $_POST['stu_name']; 
    $stu_email = $_POST['stu_email']; 
    $stu_city = $_POST['stu_city']; 
    $stmt->execute(); 
    echo "New records created successfully"; 
}catch(PDOException $e){ 
    echo "Error: " . $e->getMessage(); 
} 
$conn = null; 
} 
Смежные вопросы