-3

私はテーブルを持っています。次のようになります。

CREATE TABLE joke
(sn INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, jokes VARCHAR(255) NOT NULL UNIQUE
);

現在、テーブルには 5 つの行があります。

私のウェブページには 5 つのテキストエリアがあります。各ジョークをテキストエリアにフェッチしたい。

私はこの方法でそれを行いましたが、それは良い方法ではないと思います。他の方法はありますか?

<?php
$sql=myql_query(SELECT jokes FROM tbl_jk WHERE sn=1;)
?>
<?php
$sql1=myql_query(SELECT jokes FROM tbl_jk WHERE sn=2;)
?>
<textarea cols="10" rows="5"><?php echo $sql ?></textarea>
<textarea cols="10" rows="5"><?php echo $sql1 ?></textarea>
<textarea cols="10" rows="5">Jokes no3</textarea>
<textarea cols="10" rows="5">Jokes no4</textarea>
<textarea cols="10" rows="5">Jokes no5</textarea>

私はこのように書いています。このように、ジョークが 100 個ある場合は 100 回書かなければならないので、スイートのアイデアはあります.. 私は初心者なので、とてもシンプルです plz

4

2 に答える 2

2
$db = new PDO("database", "username", "password");
$statement = $db->prepare("SELECT jokes FROM tbl_jk LIMIT 100");
$statement->execute();
foreach ($statement->fetchAll() as $joke) {
    echo '<textarea cols="10" rows="5">' . $joke['jokes'] . '</textarea>';
}

上記を php タグ内に配置し、PDO 入力をそれぞれのものに置き換えます。すべてまたは非常に多くが必要な場合は、LIMIT取り除くことができます。

EDIT:より多くの説明:

  • $dbPHP PDO クラスを使用して、特定のデータベースへの新しい接続を作成します。

  • prepare最初のクエリ (この場合はステートメント) を記録します。後でメソッドを使用してSELECT(によって) 値を配置できます。execute():variable

  • execute()入力を受け入れてプレースホルダーを置き換えることができますが、それ以外の場合は、既存の接続:variableで以前に準備したクエリを実行するだけです。$db

  • fetchAll()前の設定から取得されたすべての行をexecute()それぞれ変数に返します$joke。その後、列に次の方法でアクセスできます$joke['column_name']

PDO には多くの種類がありfetch()ます。ここで PDO を読んでください: http://php.net/manual/de/book.pdo.php

于 2013-09-20T09:22:05.733 に答える
1

ジョークごとに SQL ステートメントを作成するのではなく、一度にすべてのジョークを選択するようにしてください。テーブルの最初の 5 つだけを選択するために、LIMIT を選択できます。または、日付フィールドがある場合は、ASC または DESC で並べ替えることができます。

$sql = "SELECT jokes FROM tbl_jk LIMIT 0,5";

次に、ループを使用して、必要なテキストエリアに配置します。

foreach ( $statement->fetchAll() as $jk){
    echo '<textarea cols="10" rows="5">'. $jk .'</textarea>';
}

おそらく、PHP と SQL を初めて使用するため、出力に関する例を示します。

$jokes = Array(
              '1' => 'Joke 1',
              '2' => 'Joke 2',
              '3' => 'Joke 3',
              '4' => 'Joke 4',
              '5' => 'Joke 5'
              );
    You should receive some array like this from you database, after that we loop over them all and we put them into the textarea. 

    foreach ( $jokes as $jk){
      echo '<textarea cols="10" rows="5">'. $jk .'</textarea><br />';
    }

mysql_query の代わりに PDO を使用してみてください。fetchAll は何をしますか?

PDOStatement::fetchAll()は、結果セットの残りのすべての行を含む配列を返します。配列は、各行を列値の配列または各列名に対応するプロパティを持つオブジェクトとして表します。フェッチする結果がゼロの場合は空の配列が返され、失敗した場合は FALSE が返されます。

于 2013-09-20T09:23:42.940 に答える