0

これは、MySQLiとArrayObjectsを使用する場合の質問ではなく、学習パスです。これがあなたにとって古い帽子である場合は、以下に追加の改善を自由に追加してください。MySQLiとArrayObjectを初めて使用する場合、これはプロセス全体の短い例です。これは、手続き型よりもはるかに効率的です。

クエリ:

//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
    )
)

出力:上記のデータスライスから1つのレコードが必要だとします。これは配列オブジェクトであるため、一部のループ構造は、オブジェクト参照ではなく文字列を予期しているため、エラーを返します。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"

ありがとう

4

1 に答える 1

-1

では、あなたが改善したいことは何ですか?

PHP検索メソッド全体などを1つの単一のSQLクエリに置き換えることができました

SELECT corg_name, corg_city FROM sometable WHERE corg_id = '$corg_id';

SQL データベースで ID を選択するだけで簡単に結果を 1 つだけ返すことができれば、PHP で配列全体を検索するよりもはるかに簡単になります。

于 2012-09-08T14:02:33.380 に答える