Mysql sorgu işlevi oluşturmak için PDO kullanarak, alışkanlık satır eklemek

1 Cevap php

PDO kullanarak bir kavrayışa almak için çalışıyorum, ve ben bir sorgu yapmak istediğiniz zaman için basit şeyler yapmak için önceden hazırlanmış bazı fonksiyonlarını kullanıyorum. Birincisi ikinci sorguyu çalıştırır, bağlanır.

Ne yazık ki) bana dbquery (kullanarak satır INSERT izin vermez. SEÇ çalışıyor, sadece çalışmak için başka bir şey almak için görünmüyor olabilir.

İşte kod:

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 Cevap

PDO::query Sadece bir sonuç kümesi döndüren sorgu ile çalışır (örneğin, SELECT)

INSERT / UPDATE / Sil PDO::exec

Eğer DBMS içine kullanıcı sağlanan veri ekleme olacak eğer ben şiddetle otomatik SQL enjeksiyonu önlemek için kaçan sağlamak için PDO hazırlanmış deyimi işlevselliğini kullanmanızı öneririz.

örneğin

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

Bkz PDO::prepare ve PDOStatement::execute