2011-01-26 98 views
0

我使用php PDO作爲db連接器。我有在綁定的電子郵件地址 問題說,我有一個SQLphp PDO綁定問題

$sql = UPDATE user set email = :email where uid = 10 

$smt = $dbh->prepare($sql); 

$smt->bindParam(':email', '[email protected]'); 

的PDO之後離開@每一件事情。

感謝名單

+1

你是什麼意思「留下@後的每一件事」 – 2011-01-26 21:32:35

回答

5

bindParam用於一個變量,而不是一個值綁定。我想你想要做的是用bindValue來代替。

+0

你回答是不正確的。在這種情況下,存儲過程與I/O參數發送數據(UPDATE)相關。出於這個原因,你應該使用bindParam並通過引用傳遞參數來正確評估它。 – cpugourou 2016-10-14 22:45:09

-1
define("SQLHOST", "127.0.0.1"); 
define("SQLUSER", "user"); 
define("SQLPASS", "password"); 
define("SQLSGBD", "database"); 

try { 
    $dbh = new PDO('mysql:host=' . SQLHOST . ';dbname=' . SQLSGBD . ';charset=UTF8', SQLUSER, SQLPASS); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch (PDOException $e) { 
    var_dump('Connection failed: ' . $e->getMessage()); 
} 

$emailList = ['[email protected]', '[email protected]']; 
$stmt = $dbh->prepare("UPDATE user set email = ? where uid = 10"); 
foreach ($emailList as $key => $email) { 
    $stmt->bindParam(1, $email, PDO::PARAM_STR); 
    $stmt->execute(); 
    $obj = $stmt->fetchall(PDO::FETCH_ASSOC); 
    if (count($obj) !== 0) { 
     /* whatever */ 
    } 
}