2015-06-14 74 views
2

我想運行多個mysql查詢(不是併發)。我正在使用準備好的語句來做這件事。這是我的代碼要點:無效的對象或資源mysqli_stmt

<?php 



if(isset($_GET['username'])&&isset($_GET['activationid'])){ 

require_once("../database/db_connect.php"); 

$stmt= $mysqli->stmt_init(); 
$stmt->prepare("Select username FROM users where username= ? AND activationid= ?"); 
$username=$_GET['username']; 
$activationid=$_GET['activationid']; 
$stmt->bind_param("ss",$username,$activationid); 
$stmt->execute(); 
$row=$stmt->get_result()->fetch_array(MYSQLI_ASSOC); 

if(!strcmp($row['username'],$username)){ 
    echo 'you are registered successfully'; 



$stmt->prepare("UPDATE users SET active=yes where username = ?"); 
$stmt->bind_param("s",$username); 
$stmt->execute(); 







} 
} 

?> 

和db_connect.php是:

<?php 





define('DBHOST','localhost'); 
define('DBUSER','root'); 
define('DBPASS','password'); 
define('DBNAME','Reminder'); 

    $mysqli= new mysqli(DBHOST,DBUSER,DBPASS,DBNAME) ; 
    if($mysqli->connect_error) { 

    echo $mysqli->mysqli_connect_error(); 

    } 
else { 
echo "connected successfully"; 
} 




?> 

這給了我這個錯誤:

警告:mysqli_stmt :: bind_param():號碼的變量不匹配 準備好的語句中的參數數量

有人可以告訴我我做錯了什麼嗎?

+1

是不是一個字符串'激活=」是''?你在哪裏獲得$ userid'?是不是'$ stmt-> bind_param(「ss」,$ username,$ activationid);' –

+0

我已經設置活動列是一個枚舉 –

+1

我錯過了什麼,或者你創建了兩個變量「$ username」和「$用戶ID」。如果是這樣,$ userid沒有被定義。 – Reisclef

回答

2

請在下面chenge代碼等,並檢查: -

//$stmt= $mysqli->stmt_init(); comment this line 
$stmt = $mysqli->prepare("Select username FROM users where username= ? AND activationid= ?") or die($mysqli->error); 
$username=$_GET['username']; 
$activationid=$_GET['activationid']; 
$stmt->bind_param("ss",$userid,$activationid); 
$stmt->execute(); 

而對於第二個相同的: -

$stmt = $mysqli->prepare("UPDATE users SET active=yes where username = ?") or die($mysqli->error); 
$stmt->bind_param("s",$username); 
$stmt->execute(); 

注: - 請把你的正確定義變量,並設置服務。謝謝。

+0

您可以在執行第一個代碼後添加代碼以運行其他語句嗎? –

+0

你的意思是說哈維可以重複使用一個$ stmt並重新綁定一個第二個電話嗎? – Drew

+0

@harvey_slash檢查我的編輯代碼。 –

2

您準備和你綁定後,(與之前執行)後,做一個

echo $mysqli->error;

沒有像知道究竟發生了什麼事