2013-02-09 221 views
3

我一直使用PDO語句,但出於某種原因,我無法說服服務器人員爲php安裝PDO,但我確實有MySQLi,我不知道我做錯了什麼,我不要收到連接錯誤,不管我怎麼輸出一個錯誤,都不會收到查詢錯誤。這是我正在做的。準備好的MySQLi語句

include 'MySQLiConnect.php'; 

if($stmt = $mysqli->prepare("SELECT * FROM zipCodeTable WHERE zip_code = ?")){ 

    $stmt->bind_param("s", '07110'); 

    $stmt->execute(); 

    $stmt->bind_result($resultsArray); 

    $stmt->fetch(); 

    foreach($resultsArray as $columnData){ 

     $matchingZipcode = $columnData['zip_code']; 
     $matchingTimezone = $columnData['time_zone']; 
    }  

    $stmt->close(); 


} 

echo $matchingZipcode.', '.$matchingTimezone; 

這基本上只是爲了確認用戶的郵政編碼,從來沒有使用過的MySQLi準備語句之前,我tryed從手動直做到這一點,不知道我做錯了。感謝您抽出時間來閱讀。

+2

如果您的「服務器人員」不允許您使用PDO,則需要新的服務器人員。 – ceejayoz 2013-02-09 19:28:09

+0

不是答案,但爲什麼要在表格中附加「Table」? – PeeHaa 2013-02-09 19:30:22

+0

@ceejayoz我在幫朋友出去,他們給了我一些半屁股託管的雲機做這個愚蠢的郵政編碼確認lol – user1053263 2013-02-09 19:32:25

回答

3

你試圖「綁定」一個文字字符串。你不能這樣做。你必須綁定一個變量。

變化

$stmt->bind_param("s", '07110'); 

$string = '07110'; 

$stmt->bind_param("s", $string); 

此外,當您綁定因此你必須提供一個變量爲每個字段返回。

例如:

$stmt->bind_result($zipCode, $timeZone); 

使用SELECT *時,這是有問題的略。您可能有興趣查看此評論以瞭解您可能想要了解的內容:http://www.php.net/manual/en/mysqli-stmt.bind-result.php#85470

+0

哦,好吧,現在有道理!像魅力一樣工作,非常感謝你! – user1053263 2013-02-09 19:39:14