0
使用MySQLi和ArrayObjects時,這不僅僅是一個問題,更是一條學習路線。如果這是您的舊帽子,請隨時爲以下內容添加任何其他改進。如果是MySQLi和ArrayObject的新手,這是整個過程的一個簡短例子。這是FAR程序風格更有效率。使用MySQLi和ArrayObjects輸出數據
查詢:
//constants for mysqli credentials, DB_HOST,DB_UNAME etc.
include('dbase');
//zip code to seach
$zipcode = 10003;
//instantiate the object variable
$mysqli = new mysqli(DB_HOST,DB_UNAME,DB_UPWORD,DB_NAME);
//run the query searching for matching records using a regular expression
$result = $mysqli->query("SELECT corg_id, corg_name, corg_city FROM sometable WHERE corg_zip REGEXP '^$zipcode';");
//using fetch_object() returns an ArrayObject
while ($row = $result->fetch_object()){
$zipmatch[] = $row;
}
//assign to session var for later use, in another script
$_SESSION['queryresult'] = $zipmatch;
所以在這一點查詢返回的結果。得到的ArrayObject的是這樣的:
Array
(
[0] => stdClass Object
(
[corg_id] => 1
[corg_name] => Acme Home Improvement
[corg_city] => New York
)
[1] => stdClass Object
(
[corg_id] => 2
[corg_name] => ABC Handy Work
[corg_city] => New York
)
[2] => stdClass Object
(
[corg_id] => 3
[corg_name] => Wile E Coyote Repairs
[corg_city] => New York
)
)
輸出: 比方說,我們希望從上面的數據切片一個記錄。由於這是一個數組對象,一些循環結構將返回錯誤,因爲它們期望字符串而不是對象引用。 foreach將採用對象引用或數組。
function selected($arrObject,$searchString,$result){
foreach($arrObject as $v){
if ($v->corg_id==$searchString){
$result[] = $v->corg_name; //string, would be index 0
$result[] = $v->corg_city; //string, would be index 1
}
}
return $result;
} //close selected function
$result = array(); //array of returned search data
$haystack = $_SESSION['queryresult']; //arrayObject to search
$needle = 3; //look for a matching id in the arrayObject
//instantiate an output array with the result of the selected function
$outputArray=selected($haystack,$needle,$result);
$comName = $outputArray[0]; //string
$comCity = $outputArray[1]; //string
echo $comName; //outputs "Wile E Coyote Repairs"
echo $comCity; //outputs "New York"
感謝
確實如此,但假設用戶有兩個搜索要求,一個是所有生成的商家在某個郵政編碼中,然後是第二個搜索,在這個搜索中,這是生成的郵政編碼搜索中的一個業務。 – rwhite35
如果在第二次搜索中要求是「一個」業務,那麼上述邏輯不會改變。它依賴於這個PHP搜索,如果你想從任何流量中「緩解」SQL數據庫,如果是的話,這可能是一個很好的PHP搜索解決方案,否則我總是希望在SQL中搜索結果。 – dbf
感謝您的反饋,好評。在這種情況下,用戶只知道一個郵政編碼。如果查詢返回結果,則他們可以選擇一個業務以獲取更多信息。你可以兩次到數據庫;或者在這個例子中,一次旅行和一次數組搜索。如果業務被某個變量所知,那麼你的方法就是正確的。 – rwhite35