2015-12-12 17 views
-2
require("inc/connection.php"); 
if ($link->connect_error) 
    die('Connect Error: '.$link->connect_errno.': '.$link->connect_error); 
$insertedcode = $_POST['code']; 
$results = $link->query("SELECT code FROM code WHERE code = :code"); 
$query_params = array( 
    ':code' => $_POST['code'] 
); 

$stmt = $link->prepare($results); 
$result = $stmt->execute($query_params); 
$row = $stmt->fetch(); 
if($row) { 
    $number = mt_rand(0,3999); 
    echo $number; 
} 

這是我所擁有的,我認爲我有隨機數部分。但由於某種原因,它給了我這個錯誤:如果代碼在數據庫中,我需要它生成一個隨機數

Fatal error: Call to a member function execute() on a non-object in C:\wamp\www\RoLuck\dashboard.php on line 21

它不會執行,林不知道爲什麼。

+0

打印$語句此行之後,似乎空。 $ stmt = $ link-> prepare($ results); – GianArb

+0

當我打印$ stmt時沒有任何反應。 –

+0

那真是那麼:) – trincot

回答

0

你在使用mysqli的代碼中以錯誤的順序執行它,對吧?如果你查詢沒有分配給代碼的實際參數,這就是原因。在查詢之前準備查詢,而不是之後。

require("inc/connection.php"); 
    if ($link->connect_error) 
     die('Connect Error: '.$link->connect_errno.': '.$link->connect_error); 
    $insertedcode = $_POST['code']; 
    //$results = $link->query("SELECT code FROM code WHERE code = :code"); 
    $query_string = "SELECT code FROM code WHERE code = :code"; 
    $query_params = array( 
     ':code' => $_POST['code'] 
    ); 

    $stmt = $link->prepare($query_string); 
    $stmt->bind_param('s', $query_params[':code']); 
    $result = $stmt->execute(); //$query_params is only in procedural, read the manual 
    $row = $stmt->fetch(); 
    if($row) { 
     $number = mt_rand(0,3999); 
     echo $number; 
    } 
+0

它給了我這個錯誤:致命錯誤:調用成員函數執行()在非對象 –

+0

嘗試用$ stmt = ...替換以$ stmt = $ link-> prepare(「SELECT code FROM code WHERE code ='some test code'」); $ stmt = > execute();並告訴我發生了什麼 – Kondziutek

+0

同樣的錯誤發生 –

0

您應該將SQL字符串傳遞給prepare,因此它是沒用的,做query電話:

// skip next line 
//$results = $link->query("SELECT code FROM code WHERE code = :code"); 
$query_params = array( 
    ':code' => $_POST['code'] 
); 

// Use SQL as argument here, not $results 
$stmt = $link->prepare("SELECT code FROM code WHERE code = :code"); 
+0

仍然不能正常工作:( –

+0

致命錯誤:調用成員函數execute()對一個非對象 –