0

mysqli から一度に 1 つの結果セットしか開くことができないという問題があります。特に、アクションを実行した後、選択クエリをループしてそのクエリ内の列を更新しようとしています。

$db = new mysqli($DBServer, $DBUser, $DBPass , $DBName);
$sql = 'SELECT UPRN, POSTCODE FROM T_TEMP';
$stmt = $db->prepare($sql);
$stmt -> Execute();

<Create an array from the above select statement as i understand that mysqli can 
only hold one result set at once (seems odd). I am unsure how to do this such that
i can then reference UPRN and POSTCODE later>

$stmt->Close();

$sql = 'update T_TEMP set LAT = ?, LONG = ? where UPRN = ?';
$stmt = $db ->prepare($sql);  

<loop through that array built above grabbing UPRN and POSTCODE as you go through>

$postcode = urlencode(<Reference the postcode in the array>);
$request_url = "http://maps.googleapis.com/maps/api/geocode/xml?address=".$postcode."&sensor=false"; 
$xml = simplexml_load_file($request_url);

$lat = round(floatval($xml->result->geometry->location->lat),4);
$long = round(floatval($xml->result->geometry->location->lng),4);

$stmt -> bind_param('ddi',$lat,$long,$UPRN);

$stmt -> Execute();

<end loop>

最初のクエリの結果を配列に取得し、ループ内でその配列を参照して値を設定できるようにするのに苦労しています。どんな助けでも大歓迎です!

4

2 に答える 2

-1

正しい方向に操縦された後、結果セットを配列に読み込み、その配列をループ処理しました。(このコメントは反対票を投じられましたが、他の誰かが見つけやすくするために編集しています)。

サーバーはメモリ内 (実際にはサーバー上) に 1 つしか保持できないため、2 つの mysqli クエリを開くことはできません。したがって、最初のクエリを php 配列に読み込み、その配列内で mysqli ステートメントをループ処理します。

$vInteger =1; //This is just an example variable

$sql ='select column from table where column = ?'; //select with a passed value

$stmt = db->prepare($sql);

$stmt-> bind_param('i', $vInteger); //again, this could be a string, double or integer

$stmt->execute();

$result = $stmt->get_result(); //retrieves the results from the server into a class

while ($row = $result->fetch_assoc(){
   $Array[] = $row; //reads the rows into a new array
} 

$stmt -> free_result(); //Drop the mysqli bit cause you are going to need it again! :)

foreach($Array as $item){
  $item['Column']; // this is the column name from your original query


 // Of course in here you might want to do another mysqli query with the prepare etc etc and reference the $item.

 }

私のために働いた mysqli を使用することに決めた場合、get_result は fetch_assoc メソッドを適用できる mysqli 結果クラスを作成すると思います..

于 2013-07-11T21:06:36.047 に答える