1

これらすべてを行うには多くの方法があることは理解していますが、最善の方法を試してみてください。

私は db パラメーター、dns、dbh、sth、sql を作成しましたが、一般的に、結果部分までの結果に非常に満足しています。

<?php

// db parameters
$dbhost = "localhost";
$dbname = "x";
$dbuser = "y";
$dbpass = "z";

// driver invocation (dsn is short for data source name)
$dsn = "mysql:host=$dbhost;dbname=$dbname";

// create db object (dbh is short for database handle)
$dbh = new PDO($dsn, $dbuser, $dbpass);

// execution of database query (sth is short for statement handle)
$sql = "SELECT * FROM a_aif_remaining";
$sth = $dbh->prepare($sql);
$sth->execute();

下に何を入れたらよいかわからない.... (A) または (B)

データの単純な配列を提示したいだけです。表から 1 行に 1 行。

オプション A

echo $_POST['fieldname1'];
echo $_POST['fieldname2'];
echo $_POST['fieldname3'];

オプション B

while ($rows = $sth->fetch(PDO::FETCH_ASSOC)) {
    echo $row[fieldname1],'<br>';
    }

そして、私は結末に自信があります

    $dbh = NULL;

?>

どんなアドバイスでも大歓迎です。




更新されたコード: (ページに何も生成しません)

<?php

    // db parameters
    $dbhost = "localhost";
    $dbname = "theaudit_db1";
    $dbuser = "theaudit_user";
    $dbpass = "audit1999";

    $dsn = "mysql:host=$dbhost;dbname=$dbname"; // driver invocation (dsn is short for Data Source Name)

try {
    $dbh = new PDO($dsn, $dbuser, $dbpass); // connect to new db object (dbh is short for Database Handle)
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // set the PDO error mode to enable exceptions
    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); // set the PDO emulate prepares to false

    // execute query to database (sth is short for Statement Handle)
    $sql = "SELECT * FROM a_aif_remaining";
    $sth = $dbh->prepare($sql);
    $sth->execute();

    $data = $sth->fetchAll(PDO::FETCH_ASSOC);

    $dbh = NULL;
}

catch(PDOException $e)
    {
    echo $e->getMessage();
}
?>
4

2 に答える 2

1

A と B の関係はわかりませんが、答えることはできます。

データの単純な配列を提示したいだけです。表から 1 行に 1 行。

質問。

$sql = "SELECT * FROM a_aif_remaining";
$sth = $dbh->prepare($sql);
$sth->execute();
$data = $sth->fetchAll(PDO::FETCH_ASSOC);

どこ$dataで求められている配列です。

于 2012-12-28T06:14:08.993 に答える
0

更新されたコードの問題は単純です。データをエコーアウトしていません。次のようなものを追加する必要があります..

   foreach($data as $arKey=>$dataRow){
        foreach($dataRow as $arKey=>$rowField){
             echo $rowField.','; //concat with a ',' to give csv like output 
        }
        echo '<br>'; //to get to next line for each row (may want to trim the last ','
   }

$_POST への参照にも混乱しています。どちらも連想配列であることは事実ですが、それは $_POST オプションが実行可能であることを意味するものではありません - $_POST にデータを配置した場合 (例: $_POST = $data)、データは無意味になります。または、別の場所からデータを投稿した場合。どちらもあなたが求めているものに合わないようですので、 $_POST を忘れて、多次元の $data 配列にアクセスする方法を理解してください。この件については無限のつぶやきがあります。使ってみて

    var_dump($data) 

何が起こっているかを視覚化するのに役立つはずです。

注:オプションBでは、配列を正しく連結または参照していません。次のようにする必要があります。

    while ($rows = $sth->fetch(PDO::FETCH_ASSOC)) {
        echo $rows[fieldname1].'<br>'; //$row doesnt exist its $rows and you use . to concat not ,
        }

ああ、そうです。おそらく、$dbh を null に設定するよりも、unset を使用する方がよいでしょう。

unset($dbh);
于 2014-08-19T09:18:57.960 に答える