2012-07-04 21 views
6

Sto provando a iniziare con PDO e sto avendo qualche problema. Ecco il mio codice originale:Problemi di utilizzo del PDO per la prima volta

$query = " 
       UPDATE `products` 
       SET `product_qty` = '{$_GET['product_qty']}' 
       WHERE `product_id` = '{$_GET['product_id']}' 
    "; 

    mysql_query($query) or die(mysql_error()); 

Questo funziona bene, ma quando provo a tradurre che a DOP sintassi:

$db->prepare(' 
    UPDATE products 
    SET product_qty = :product_qty 
    WHERE product_id = :product_id 
    '); 

    try 
    { 
     $db->execute(array(':product_qty' => $_GET['product_qty'], ':product_id' => $_GET['product_id'])); 
    } 
    catch (PDOException $e) 
    { 
     print "Error!: " . $e->getMessage() . "<br/>"; 
     die(); 
    } 

ottengo l'errore:

Fatal error: Call to undefined method PDO::execute() in ...


Qualcuno potrebbe aiutarmi a far funzionare la mia prima domanda PDO?

+6

In corso per avere il tempo di passare a PDO. – Mahn

risposta

5

Il $db->prepare() restituisce un PDOStatement che ha il metodo execute().

$stmt = $db->prepare('UPDATE products 
    SET product_qty = :product_qty 
    WHERE product_id = :product_id'); 

$stmt->execute(array(
    ':product_qty' => $_GET['product_qty'], 
    ':product_id' => $_GET['product_id'] 
)); 
4

$db->prepare() restituisce un oggetto PDOStatement. Devi chiamare lo execute() su quello, non su $db.

1

ya Mi riferisco all'esempio ... il preparare crea una dichiarazione, ed è che che si esegue execute() su ...

<?php 
/* Execute a prepared statement by passing an array of insert values */ 
$calories = 150; 
$colour = 'red'; 
$sth = $dbh->prepare('SELECT name, colour, calories 
    FROM fruit 
    WHERE calories < :calories AND colour = :colour'); 
$sth->execute(array(':calories' => $calories, ':colour' => $colour)); 
?> 
1

La chiamata a prepare restituisce una PDOStatement, è questo che è necessario per execute. Prova il seguente:

$sth = $db->prepare(' 
    UPDATE products 
    SET product_qty = :product_qty 
    WHERE product_id = :product_id 
'); 

$sth->execute(array(':product_qty' => $_GET['product_qty'], ':product_id' => $_GET['product_id'])); 
Problemi correlati