ホームページ >バックエンド開発 >PHPチュートリアル >PHP ステートメントは MYSQL 内の複数のテーブルをクエリし、ページに表示します。

PHP ステートメントは MYSQL 内の複数のテーブルをクエリし、ページに表示します。

WBOY
WBOYオリジナル
2016-06-23 13:37:181011ブラウズ

PHP ステートメントを使用して複数のテーブルをクエリします。テーブルのフィールドは同じですが、テーブル名は異なります。例: b ABC201202、ABC201203、ABC201204 ... テーブル名は月次テーブルに基づいて構築されています。一度に複数のテーブルを走査して MySQL でデータを抽出する方法がわかりません。

ディスカッションへの返信(解決策)

forループを使ってsql文を入れて繰り返し実行してみるとうまくいくかわかりません

データを複数回取得して処理してみましょう。もう一度

PHP コード


$table = array("abc201202","abc201203","abc201204");
$result =array()
foreach($table as $table_name) {
$sql = "select * from ". $ table_name;
$rec =mysql_query($sql);


このようにして取り出したデータはページングできませんか?



PHP コード

$table = array("abc201202","abc201203","abc201204");
$result =array()
foreach($table as $table_name) {
$sql = "select * from ".$table_name;
" $rec =mysql_query($sql);
......

これを行うことでデータを走査することもできますが、データをページ分割することはできません。

$table = array("abc201202","abc201203","abc201204");$result =array();foreach($table as $table_name) {      $sql = "select * from ".$table_name;      $rec =mysql_query($sql);      while($row=mysql_fetch_row($rec)) {           $result[] = $row;      }}

$select = array();$table = array("abc201202","abc201203","abc201204");foreach($table as $v) {   $select[] = "(select * from $v)";}$sql = join(' UNION ', $select);$res = mysql_query($sql);

PHP コード

$table = array("abc201202","abc201203","abc201204")

$count = count($table); ;
for ($i=0;$i $sql = $sql." select * from '".$table[$i]."' Union all";
}
$s… …

コードを試しました、echo $sql; 出力は次のとおりです: select * from 'abc201202' Union all select * from 'abc201203' Union all select * from 'abc201204' Union all select * from ''

Me 変更後出力は次のようになります: select * from twebmailaction_201208 Union all select * from twebmailaction_201209 Union all select * from twebmailaction_201210 Union all


echo $num = mysql_num_rows($sql); を使用しましたが、結果はありませんでした。


PHP コード

$select = array();

$table = array("abc201202","abc201203","abc201204");
foreach($table as $v) {
$select[ ] = "(select * from $v)";

$sql = join(' UNION ', $select);
$res = mysql_query...

いくつかのテーブルをクエリできます。データ項目の合計は正しいです。

しかし、何が起こっているのかわかりません。データ フレームが表示され、ページングが正しいように見えますが、データベース フィールドの内容がありません

また、次のページをクリックすると、次のプロンプトが表示されます。 警告: mysql_fetch_array( ): 指定された引数は、F:www_localG03list5.php の 88 行目で有効な MySQL 結果リソースではなく、データを表示するためのフレームが消えています。
教育を求める初心者


$table = array("abc201202","abc201203","abc201204");$result=array();$count = count($table);for ($i=0;$i<$count;$i++){      $sql = $sql." select * from '".$table[$i]."' union all";}$sql=$sql." select * from '".$table[$count]."'";$rec =mysql_query($sql);      while($row=mysql_fetch_row($rec)) {           $result[] = $row;      }



PHP コード

$table = array("abc201202","abc201203","abc201204")

$count = count($table); -1;//配列の添え字

for ($i=0;$i<$count;$i++){

$sql = $sql." select * from '".$table[$i]" を減算します。ユニオ…

もう大丈夫です。まだいくつか問題があります:

1. ページングにいくつかの問題があるようです: $sql=$sql." select * from '".$table[$count]."'"." limit $page $pagesize" ; ページングのために、制限を追加しました。これは正しい追加ですか? 历遍路 2、トラバーサル サイクルを変更し、フィールドの値を表示するクエリを変更しました:
while ($ row = MySQL_FETCH_Row ($ Row)) {
echo "& lt; & lt; & gt;"。ユーザー名];

出力には直線が多く、フィールド値はありませんか?




制限 $page $pagesize を制限 $page に変更してください。$pagesize を試してください

制限 $page $pagesize を制限 $page に変更してください。$pagesize を試してください

これは問題ではありません。以前に次のステートメントがありました: $page.=',';


ここでは主にフィールドの内容を表示しますが、値を割り当てる方法がわかりません。

PHP コード


$select = array();
$table = array("abc201202","abc201203","abc201204");
foreach($table as $v) {
$select[ ] = "(select * from $v)";

$sql = join(' UNION ', $select);
$res = mysql_query...


唯一欠けているのは、指定されたフィールドの表示の実装です!指定されたフィールドを走査する方法がわかりません。たとえば、 while ($ row = (MySQL_FETCH_ROW ($ Res)) {





}} ページ表示ユーザー





$ select = Array ( );
$table = array("abc201202","abc201203","abc201204");
foreach($table as $v) {
$select[] = "($v から * を選択)";

$sql = join(' UNION ', $select);
$res = mysql_query...


例: while($row=(mysql_fetch_row($res))){
echo $row[user];
} このようにページネーションで表示するとユーザーフィールドに出力がないのはなぜですか? これがダメなら PHP を使って処理しましょう

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。