Использование PDO для создания функции запроса MySQL, не будет вставлять строки - PullRequest
1 голос
/ 04 февраля 2010

Пытаюсь понять, как использовать PDO, и я использую некоторые готовые функции, чтобы упростить ситуацию, когда я хочу сделать запрос. Первый подключается, второй выполняет запрос.

К сожалению, мне не удастся вставить строки с помощью dbquery (). SELECT работает нормально, просто не могу заставить работать что-либо еще.

Вот код:

function dbConnect() 
  {
  global $dbh;

  $dbInfo['database_target'] = "localhost";
  $dbInfo['database_name'] = "mysqltester";
  $dbInfo['username'] = "root";
  $dbInfo['password'] = "password";

  $dbConnString = "mysql:host=" . $dbInfo['database_target'] . "; dbname=" . $dbInfo['database_name'];
  $dbh = new PDO($dbConnString, $dbInfo['username'], $dbInfo['password']);
  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $error = $dbh->errorInfo();

  if($error[0] != "") 
    {
    print "<p>DATABASE CONNECTION ERROR:</p>";
    print_r($error);
    }
  }

function dbQuery($queryString) 
  {
  global $dbh;

  $query = $dbh->query($queryString);
  $i = 0;

  foreach ($query as $query2) 
    {
    $queryReturn[$i] = $query2;
    $i++;
    }

  if($i > 1) 
    {
    return $queryReturn;
    }
    else
    {
    return $queryReturn[0];
    }
  }

1 Ответ

3 голосов
/ 04 февраля 2010

PDO :: query Работает только с запросами, которые возвращают набор результатов (например, SELECT)

Для вставки / обновления / удаления см. PDO :: exec

Если вы собираетесь вставлять предоставленные пользователем данные в вашу СУБД, я настоятельно рекомендую использовать функцию подготовленного оператора PDO для обеспечения автоматического экранирования для предотвращения внедрения SQL.

1012 *, например *

<?php
$stmt = $dbh->prepare("INSERT INTO tester1 (name, age) VALUES (?, ?)");
$stmt->execute(array('James',25));

См. PDO :: подготовить и PDOStatement :: execute

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...