2010-12-01 7 views
0

サンプル・コード:このサンプル・コードで- >は、mysql_fetch_array()プロシージャ

$infoArray = array(); 
require_once("connectAndSelect.php"); 
// Connects to mysql and selects the appropriate database 
$sql = "SOME SQL"; 
if($results = mysql_query($sql)) 
{ 
    while($result = mysql_fetch_array($results, MYSQL_ASSOC)) 
    { 
     $infoArray[] = $result; 
    } 
} 
else 
{ 
    // Handle error 
} 
echo("<pre>"); 
print_r($infoArray); 
echo("</pre>"); 

、私は単純に$ infoArrayにの私のクエリの結果を取得したいです。簡単な仕事、簡単な措置...ない。 私はこのようなものを楽しんでいるだろう:あなたが見ることができるように、無

$sql = "SOME SQL"; 
$infoArray = mysql_results($sql); 

しかし、私は2つの余分な変数と私はあまりにも多くを気にしない、whileループを持っています。彼らは実際に何もしません:私はそれらを再び使用することはありません。さらに、私はそれらを呼び出す方法を知らない。ここでは$ resultsと$ resultを使用していますが、どのようなものであるかを表していますが、あまりにも似ているので、かなり混乱することがあります。だからここに私の質問は以下のとおりです。

  1. 私は タスクのこの種のことは知らない 任意の簡単な方法はありますか?
  2. もしそうでなければ、 はあなたにどのような名前を付けますか? はありますか?
+0

しばらくはループ複数の一致以前のSQL戻り**のIF **あなたはすべての結果は、MySQLによって返さフェッチすることを確認です。だからあなたはそれらをスキップすることはできません、そうでなければ**不完全です** – ajreal

答えて

0

既存のコードベースでそれを侵害していない限り、 DONTはmysql拡張子を使用します。 PDOまたはMysqliを使用してください。 PDOは2つのうち好ましいものである。

あなたの例では、PDOで非常にconsiseステートメントのセットを来ることができます。今、クエリ内の変数があるときにのみ、上記を使用する必要がありますしかし

// create a connection this could be done in your connection include 
$db = new PDO('mysql:host=localhost;dbname=your_db_name', $user, $password); 

// for the first or only result 
$infoArray = $db->query('SOME SQL')->fetch(PDO::FETCH_ASSOC); 

// if you have multiple results and want to get them all at once in an array 
$infoArray = $db->query('SOME SQL')->fetchAll(PDO::FETCH_ASSOC); 

    // if you have multiple results and want to use buffering like you would with mysql_result 
    $stmt = $db->query('SOME SQL'); 
    foreach($stmt as $result){ 
    // use your result here 
    } 

。彼らは...これを処理するための最も簡単な方法をエスケープする必要がある変数がある場合は、準備されたステートメントである:あなたが返される複数の行を期待している場合

$stmt = $db->prepare('SELECT * FROM some_table WHERE id = :id'); 
$stmt->execute(array(':id' => $id)); 

// get the first result 
$infoArray = $stmt->fetch(PDO::FETCH_ASSOC); 

// loop through the data as a buffered result set 
while(false !== ($row = $stmt->fetch(PDO::FETCH_ASSOC))){ 
    // do stuff with $row data 
} 
+0

私はPDOについて聞いたことがありません。あなたはリンクを提供できますか? – Shawn

+0

@Shawn:PHPドキュメント - http://www.php.net/manual/ja/book.pdo.php – prodigitalson

1

whileループが本当に必要なだけです。 1つの行を取得している場合は、mysql_fetch_array()を使用するだけです。

$query = "SOME SQL"; 
$result = mysql_query($query); 
$row = mysql_fetch_array($result); 

私が使用する標準は1行返りです。 PHPでこれを行うのはちょっと大変ですが、少なくともプロセスをデバッグ可能なステップに分割してください。

0

使用PDO:

<?php 

/*** mysql hostname ***/ 
$hostname = 'localhost'; 

/*** mysql username ***/ 
$username = 'username'; 

/*** mysql password ***/ 
$password = 'password'; 

try { 
    $dbh = new PDO("mysql:host=$hostname;dbname=mysql", $username, $password); 
    $sql = "SELECT * FROM myTable"; 
    $result = $dbh->query($sql) 
    //Do what you want with an actual dataset 
} 
catch(PDOException $e) { 
    echo $e->getMessage(); 
} 
?> 
関連する問題