2013-09-11 5 views
0

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

<?php 
    try{ 
     echo $_POST['name'].", ".$_POST['age'].", ".$_POST['email'].", ".$_POST['name'].", ".$_POST['country'].", ". $_POST['city'] ; 
     $user="root"; 
     $pass="root123"; 
        $con=new PDO('mysql:host=localhost;dbname=Emp', $user, $pass); 
     $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
     $con->beginTransaction(); 
     //echo "INSERT INTO info(Empid,Ename,Age,Email,Country,City,Salary) VALUES('".$_POST['eid']."','".$_POST['name']."','".$_POST['age']."','".$_POST['email']."','".$_POST['country']."','".$_POST['city']."','".$_POST['salary']."')"; 
     $num=$con->exec("INSERT INTO info(Empid,Ename,Age,Email,Country,City,Salary) VALUES('".$_POST['eid']."','".$_POST['name']."','".$_POST['age']."','".$_POST['email']."','".$_POST['country']."','".$_POST['city']."','".$_POST['salary']."')"); 
     echo "<br>".$num." row added succesfully"; // this is displayed when I execute this but database is empty. 
    } 
    catch(Exception $e) 
    { 
     echo 'Exception -> '; 
     var_dump($e->getMessage()); 
    } 
    ?> 
+0

, что происходит при выполнении этого запроса непосредственно в базу данных? – zzlalani

+2

Вы начинаете транзакцию с 'beginTransaction()', но она не будет отображаться в базе данных до тех пор, пока вы не завершите транзакцию с помощью 'commit()' –

+0

. Майк прав, вам нужно «commit» @ user2655318 – zzlalani

ответ

1

вы должны либо совершить или откат транзакции.

Изменения, внесенные в базу данных с помощью транзакций PDO, не совершаются до завершения транзакции путем вызова PDO::commit() или Calling PDO::rollBack()

<?php 
try{ 
    echo $_POST['name'].", ".$_POST['age'].", ".$_POST['email'].", ".$_POST['name'].", ".$_POST['country'].", ". $_POST['city'] ; 
    ... 
    $con->beginTransaction(); 
    .... 
    $con->commit(); 
} 
catch(Exception $e) 
{ 
    echo 'Exception -> '; 
    var_dump($e->getMessage()); 
    $con->rollBack(); 
} 
?> 
+0

Не имеет значения, но у вас есть опечатка здесь '$ conn-> commit() ; 'и также у нас есть тот же самый код в наших ответах. странно: / – zzlalani

2

Поскольку вы использовали beginTransaction(), вы должны commit изменения. Добавить

$con->commit(); 

Ссылка: PHP Manual

Примечание: Даже если вы используете PDO, вы по-прежнему интерполирования HTTP запроса значения без санобработки, что может быть плохо

1

Все, что вам нужно сделать, это commit и/или rollBack код

<?php 
    try{ 
     . 
     . code 
     . 
     $con->beginTransaction(); 
     . 
     . code 
     . 
     $num=$con->exec("INSERT INTO info (Empid,Ename,Age,Email,Country,City,Salary) VALUES('".$_POST['eid']."','".$_POST['name']."','".$_POST['age']."','".$_POST['email']."','".$_POST['country']."','".$_POST['city']."','".$_POST['salary']."')"); 
     $con->commit(); // This is missing 
    } 
    catch(Exception $e) 
    { 
     var_dump($e->getMessage()); 
     $con->rollBack(); // And this is missing 
    } 
?> 
Смежные вопросы