代码之家  ›  专栏  ›  技术社区  ›  JoeCortopassi Dan

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

  •  1
  • JoeCortopassi Dan  · 技术社区  · 16 年前

    试图了解如何使用PDO,我正在使用一些预制的函数来简化我想进行查询时的操作。第一个连接,第二个运行查询。

    不幸的是,它不允许我使用dbquery()插入行。选择工作很好,只是似乎不能得到任何其他工作。

    代码如下:

    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 回复  |  直到 16 年前
        1
  •  3
  •   hobodave    16 年前

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

    有关插入/更新/删除,请参见 PDO::exec

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

    例如

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

    PDO::prepare PDOStatement::execute