ОБНОВЛЕНИЕ: Этот вопрос был дан ответ У меня есть простая форма, где пользователи могут обновлять свои mysql db. Я использовал mysql_
для подключения к базе данных, но узнал, что pdo - лучший способ сделать это, так как mysql_
обесценивается.Как правильно перенести из mysql_ в PDO
Ниже приведена полная форма OLD, за которой следует полная форма нового пути. Новый способ выдает ошибку
СТАРЫЙ ПУТЬ:
<?php
$host = 'ip_address';
$user = 'user_name';
$password = 'password';
$link = mysql_connect($host, $user, $password);
$selected = mysql_select_db('db_name', $link);
if(!isset($_POST['text-input']))
?>
<form method="post">
%slice%
<input type="submit" value="Submit" />
</form>
%[if !edit]%
<?php
%[repeat items]%
$form_input%id=repeatIndex% = $_POST['element-%id=repeatIndex%'] ;
%[endrepeat]%
$query = 'INSERT INTO `table_name` (%[repeat items]%%[endif]%%html="Edit Me"%%[if !edit]%,%[endrepeat]%) VALUES (%[repeat items]%"' . $form_input%id=repeatIndex% . '",%[endrepeat]%);';
$query = preg_replace('/,\);/',');',$query);
$query = preg_replace('/,\) /',')',$query);
mysql_query($query);
?>
%[endif]%
Новый способ:
<?php
db = new PDO('mysql:host=ip_address;dbname=db_name;', 'user_name', 'password');
?>
<form method="post">
%slice%
<input type="submit" value="Submit" />
</form>
%[if !edit]%
<?php
%[repeat items]%
$form_input%id=repeatIndex% = $_POST['element-%id=repeatIndex%'] ;
%[endrepeat]%
$query = 'INSERT INTO `table_name` (%[repeat items]%%[endif]%%html="Edit Me"%%[if !edit]%,%[endrepeat]%) VALUES (%[repeat items]%"' . $form_input%id=repeatIndex% . '",%[endrepeat]%);';
$query = preg_replace('/,\);/',');',$query);
$query = preg_replace('/,\) /',')',$query);
mysql_query($query);
?>
%[endif]%
Ошибки, которые получает бросок на это:
Warning: mysql_query() [function.mysql-query]: Access denied for user
'kuler'@'localhost' (using password: NO) in
/home/path_to/index.php on line 125
Warning: mysql_query() [function.mysql-query]: A link to the server could not be
established in /home/path_to/index.php on line 125
Я надеюсь, что предоставили достаточно информации.
Вы все еще зову 'mysql_query()' с PDO. Эти два не совместимы. Просмотрите руководство [PDO manual] (http://php.net/manual/en/book.pdo.php) для многих примеров, используя 'prepare()' 'execute()' или 'query()'. –
Пожалуйста, посмотрите [это] (http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php), хотя речь идет о SQL-инъекции, но она дает вам базовый информацию о PDO. – Adi