Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用PDO创建mysql查询函数,不会插入行_Php_Mysql_Pdo - Fatal编程技术网

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

Php 使用PDO创建mysql查询函数,不会插入行,php,mysql,pdo,Php,Mysql,Pdo,试图掌握PDO的使用,我正在使用一些预先制作的函数来简化查询。第一个连接,第二个运行查询 不幸的是,它不允许我使用dbquery()插入行。选择工作很好,只是似乎无法让任何其他工作 代码如下: function dbConnect() { global $dbh; $dbInfo['database_target'] = "localhost"; $dbInfo['database_name'] = "mysqltester"; $dbInfo['username'] =

试图掌握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];
    }
  }
函数dbConnect()
{
全球$胸径;
$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=新PDO($dbConnString,$dbInfo['username'],$dbInfo['password']);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
$error=$dbh->errorInfo();
如果($error[0]!=“”)
{
打印“数据库连接错误:

”; 打印错误($error); } } 函数dbQuery($queryString) { 全球$胸径; $query=$dbh->query($queryString); $i=0; foreach($query作为$query2查询) { $queryReturn[$i]=$query2; $i++; } 如果($i>1) { 返回$queryReturn; } 其他的 { 返回$queryReturn[0]; } }
仅适用于返回结果集的查询(例如
选择

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

如果要将用户提供的数据插入到DBMS中,我强烈建议使用PDO的prepared statement功能提供自动转义以防止SQL注入

e、 g


那么使用这样的方法$dbh->exec(“插入tester1(姓名、年龄)值('James',25)”);对虽然我强烈建议在相关的时候使用预先准备好的语句,但它们会为您处理好逃逸。我将更新我的答案以反映这一点。谢谢。预处理语句阻止sql注入?从本质上讲,预处理语句向DB提交两件事。首先是语句,它不填充用户输入。然后它分别提交变量。通过将两者分开,人们无法将sql代码放入插入中。它对于防止SQL注入攻击非常有用!
<?php
$stmt = $dbh->prepare("INSERT INTO tester1 (name, age) VALUES (?, ?)");
$stmt->execute(array('James',25));