2013-06-28 2 views
-4

Так что я пытаюсь использовать PDO для предотвращения инъекций sql, но после запуска моего кода данные не вводятся в базу данных. Если бы кто-то мог найти ошибку, я был бы очень благодарен.PHP mysql после попытки использования PDO мои запросы не выполняются

header("location:employees.php"); 

$connect = mysql_connect("localhost","root",""); 
if(!$connect){ 
    die(mysql_error($connect)); 
} 
mysql_select_db("employees",$connect) or die(mysql_error()); 
$dbConnection = new PDO('mysql:dbname=employees;host=localhost;', 'localhost', ''); 
$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 


$name = $_POST['name']; 
$position = $_POST['position']; 
$wage = $_POST['wage']; 
$preparedStatement = $db->prepare('INSERT INTO employees (name, position, wage) VALUES (:name, :position, :wage)'); 
$preparedStatement->execute(array(':name' => $name,':position' => $position,':wage' => $wage)); 
mysql_query($preparedStatement); 

У меня нет никаких ошибок или ничего, но пользователь не занесен в базу данных.

+0

'mysql_ *' осуждается. Вы должны использовать соответствующие операции 'mysqli_'/ – hexafraction

+0

. Вам нужно потратить некоторое время на изучение руководства PDO и [этого превосходного учебника PDO] (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers). Прямо сейчас вы пытаетесь смешивать 'mysql _ *()' API и PDO, но они полностью несовместимы. Ваш код PDO должен включать _no_ ссылки на 'mysql _ *()' функции. –

+2

Пожалуйста, скажите мне, что это не настоящий код. – Achrome

ответ

2

Вы смешиваете понятия здесь: либо использовать PDO или mysql_ функции:

header("location:employees.php"); 

$dbConnection = new PDO('mysql:dbname=employees;host=localhost;', 'localhost', ''); 
$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$name = $_POST['name']; 
$position = $_POST['position']; 
$wage = $_POST['wage']; 
$preparedStatement = $db->prepare('INSERT INTO employees (name, position, wage) VALUES (:name, :position, :wage)'); 
$preparedStatement->execute(array(
    ':name' => $name, 
    ':position' => $position, 
    ':wage' => $wage 
));