使用PDO创建mysql查询函数,不会插入行

时间:2010-02-03 23:27:38

标签: php mysql pdo

试图掌握使用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 个答案:

答案 0 :(得分:3)

PDO::query仅适用于返回结果集的查询(例如SELECT

对于INSERT / UPDATE / DELETE,请参阅PDO::exec

如果您要将用户提供的数据插入到DBMS中,我强烈建议使用PDO的预准备语句功能来提供自动转义以防止SQL注入。

e.g。

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

请参阅PDO::preparePDOStatement::execute