2014-06-27 44 views
0

對此很新穎。我的連接工作正常,我可以從我的數據庫插入/選擇/刪除等,但一旦我開始嘗試使其安全,使用綁定,它只是無所事事。整個下午我一直假設它只是我習慣的語法,但我已經嘗試了一切,並經歷了無數的教程。這一切都有效,直到我開始裝訂。當我運行下面的代碼時,沒有任何反應。運行它並檢查我的數據庫後,沒有插入。PHP PDO,綁定不起作用

這裏是我的代碼現在...我已經剝離它的基礎知識。不應該這樣工作嗎?還有什麼可能是錯的?我開始認爲我的服務器或某事出了問題。

<?php 
//connection is working before this 
$query = $db->prepare("INSERT INTO Players (Name) VALUES (:name)"); 
$query->bindParam(':name', 'John Smith'); 
$query->execute(); 
?> 

以防萬一,這裏是我的連接步驟....

try { 
    $db = new PDO('mysql:host=localhost;dbname=xxx;charset=utf8', 
     'xx', 'xxx', array(
      PDO::ATTR_EMULATE_PREPARES => false, 
      PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 
     )); 
    echo "Connected"; 
} 
catch(PDOException $e) 
{ 
    echo $e->getMessage(); 
} 

有與連接沒有問題。

+1

它不起作用,因爲['bindParam'](http://www.php.net/manual/en/pdostatement.bindparam.php)需要第二個參數作爲引用**變量**。 **值**不是有效的參考。 –

+0

嘗試從bindParam中刪除:可能嗎? – pascalvgemert

+1

@pascalvgemert不,它應該這樣工作。 –

回答

0

對於bindValue(),第一個參數需要是值的標識符,在你的情況下它將是':name'。第二個參數是被綁定這很可能會是一個變量傳遞給你的方法,所以這將是$名稱,看看這裏

$dbHandler = self::getHandler(); 
    // Prepare the Query: 
    $stmtHandler= $dbHandler->prepare("INSERT INTO Players (Name) VALUES (:name)"); 
    // Bind the value: 
    $stmtHandler->bindValue(':name', $name); 
    // Execute the Query: 
    $stmtHandler->execute(); 

php.net可能會做一個更好的工作,解釋它的價值爲你HERE

希望它可以幫助你。