「SELECT COUNT(*) AS cnt」として、PDOの例じゃないのであれですが、
$kekka = mysql_fetch_array($result,MYSQL_ASSOC)
$cnt = $kekka['cnt'];
で、件数は取れます。
PDO は execute で SQL を実行して、fetch でデータを取り出します。
件数を取り出すあたりを以下のようにしてみてください。
//抽出条件(例えばusa)での件数を出す $sql = "SELECT count(*) FROM test02 where country = 'usa'"; $result = $dbh->prepare($sql); $result->execute(); //echo (int)$result; $data = $result->fetch(PDO::FETCH_NUM); echo $data[0]; //件数分だけUpdateする $i = 0; for($i;$i<=$data[0];$i++){// $data[0] が件数 ...
http://www.php.net/manual/ja/pdostatement.execute.php
http://www.php.net/manual/ja/pdostatement.fetch.php
▽3
●
snow0214 ●300ポイント ベストアンサー |
このコードを試してみてください。
<?php //国別コード表 $CountryCode = array( 'usa'=>'001', 'cn'=>'086', 'jp'=>'081' ); try { $dbh = new PDO('mysql:host=localhost;dbname=urank','****','****'); //抽出条件(例えばusa)での件数を出す /** $counter = 0; $sql = "SELECT count(*) FROM test02 where country = 'usa'"; if ($res = $dbh->query($sql)) { if ($res->fetchColumn() > 0) { $sql = "SELECT * FROM test02 where country = 'usa'"; foreach ($dbh->query($sql) as $row) $counter++; } } echo $counter; **/ //Updateする $counter['success'] = 0; $counter['failure'] = 0; foreach ($CountryCode as $country=>$code) { $sql1 = "SELECT * FROM test02 where country = '{$country}'"; $i = 1; foreach ($dbh->query($sql1) as $row) { $sql2 = 'UPDATE test02 SET code = :code where country = :country and name = :name'; $stmt = $dbh->prepare($sql2); $stmt->bindParam(':code', sprintf("%s%04d", $code, $i), PDO::PARAM_STR); $stmt->bindParam(':country', $country, PDO::PARAM_STR); $stmt->bindParam(':name', $row['name'], PDO::PARAM_STR); $res = $stmt->execute(); if ($res) $counter['success']++; else $counter['failure']++; $i++; } } echo '更新成功 ' . $counter['success'] . '件/更新失敗' . $counter['failure'] . '件'; } catch (PDOException $e) { var_dump($e->getMessage()); exit; } ?>