2013-01-14 54 views
1

當我運行下面的代碼:MySQL-> execute()導致另一個Query崩潰?

$_1= $Var->prepare("SELECT Status FROM UserCompletion WHERE `UserID`=?"); 
$_1->bind_param('i', $_SESSION['UID']); 
$_1->execute(); 
$metaResults = $_1->result_metadata(); 
$fields = $metaResults->fetch_fields(); 

我得到這個錯誤:

Fatal error: Call to a member function fetch_row() on a non-object in /var/www/CMS/API/Constants.php on line 17

這個查詢是一個不同的頁面,其中我的工作。這是查詢的一個上:

$PathLocation = $STD->query("SELECT PathLocation From SiteVariables"); 
$FilePath = $PathLocation->fetch_row(); 

當我註釋掉execute();停止返回的錯誤;爲什麼我的執行導致另一個頁面崩潰?

更新

execute();查詢不失敗。

$_1 = $STD->prepare("SELECT Status FROM UserCompletion WHERE `UserID`=?"); 
$_1->bind_param('i', $_SESSION['UID']); 
$_1->execute(); 
$metaResults = $_1->result_metadata(); 
$fields = $metaResults->fetch_fields(); 
#$GetCompletedArray = $GetCompletedResults->fetch_array(MYSQLI_ASSOC); 
print_r($fields); 

返回:

([0] => stdClass Object ([name] => Status [orgname] => Status [table] => UserCompletion [orgtable] => UserCompletion [def] => [db] => SLMS [catalog] => def [max_length] => 0 [length] => 1 [charsetnr] => 63 [flags] => 36865 [type] => 3 [decimals] => 0))

和我的其他詢問,直到執行的到位不會失敗。我知道這一點,因爲沒有對constants.php的查詢,用戶訪問的每個頁面都將被阻止。

+0

是否用contants.php文件作爲包含或許,並執行您的新查詢導致某些變量被覆蓋,這是以後需要? –

+0

@Oldskool當OP使用MySQLI API時,爲什麼你會將此重新標記爲PDO? –

+0

@AshleySheridan是的,constants.php是一個包含文件,查詢工作成功,沒有變量被覆蓋 – user1968541

回答

0

來自MySQLi execute() manual;

Note:

When using mysqli_stmt_execute(), the mysqli_stmt_fetch() function must be used to fetch the data prior to performing any additional queries.

您包含的代碼沒有這樣做,這只是獲取元數據,因此查詢是最有可能留下打開的結果集或遊標,讓您的第二個語句失敗。