- ベストアンサー
for($i=1; $i<hoge; $i++)
for($i=1; $i<hoge; $i++) hogeの数字が不定期に増えていく場合どうしたらいいでしょうか? sqlでテーブルのデータを取っているのですが現在はその数が3なので$i≦3で済むのですが これが10に増えたり後々100に増えたりします テーブルのデータが増えるたびに$i<hogeの部分を書き直すのは良くないと思います forを使っているのが間違いかもしれませんが phpでこういう場合は何を使えばいいでしょうか? 回答よろしくお願いします
- hogeokwave
- お礼率17% (4/23)
- PHP
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
foreachをご存じないのかな・・・? http://php.net/manual/ja/control-structures.foreach.php なんかforeachを知らないレベルとなると、現在非推奨とされている「mysql_connect」「mysql_query」あたりの関数を使ってそうな気がするので、PDOクラスを使うようにしてください、と推測で警告。 http://www.php.net/manual/ja/book.pdo.php http://www.phpbook.jp/tutorial/pdo/ 使いやすいようにラッパークラスを作るとこんな感じです。 http://qiita.com/mpyw/items/6539a0a65240103a5d43
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
whileで回せばよいのでは?
関連するQ&A
- PHPでMySQLのSET @hoge:=□;は?
・PHPで、MySQLのSET @hoge:=□;は使えないのでしょうか? ・一度SQL経由で取得したデータをPHPでセットして、再度SQL発行するしかない? ■やりたいイメージ $sql = ' SET @hoge:=□; SET @piyo := ■; SELECT * FROM temp WHERE date BETWEEN @min AND @max; '; $sth = $pdo->prepare($sql);
- 締切済み
- PHP
- ループ forに関して for($i = $num ; $i < $max ; $i++)
phpの初心者です。 以下の記述ですが、上手にループしてくれません。 for($i = $num ; $i < $max ; $i++) $num の部分に「0」を入れると稼動するのですが、変数を代入したいというのが希望です。 方法があったらご教授下さい。
- ベストアンサー
- PHP
- phpで if( $hoge == 0 ) で、$hogeが文字列でもtureになる
phpで、$hogeの値が”0”の時だけ、動作させようと思い if( $hoge == 0 ) と記述したのですが、0でない時もtrueに 例えば $hogeの中身が、"text"とかの文字列の時もtrueになっていましました。 そこで if( $hoge == "0" ) と0をダブルコーテションで囲んだらうまく0のデータだけtrueに なるよう動作したのですが なぜ前者の 0 の時は、テキストをも通過してしまったのでしょうか? ダブルコーテションをつけるか否かは 文字列か、数字かの違いというのは分かるので "text"ではなく、"100"とかであれば、 両方うまく動作していたであろうことは察しがつきます。 しかし、前者で、"text"をゼロとして認識してしまった理由がよく分かりません。
- ベストアンサー
- PHP
- while for の使い方
中古書店でかった本でphpを独学で勉強しているのですが、そのほんの課題のところに「while, for分を用いて、1から10までの和を求めて出力するプログラムを作成せよ」とあります。 しかし、そこの回答部分が破けており答えがわかりません。下にとりあえずできるところまでつくったプログラムを貼っておくので、どこが悪いのか教えていただけないでしょうか? <?php $i=1; while($i<=10){ $num=("$i +$i"); $i++; } for($i=1;$i<=10;$i++){ $num=("$i +$i"); } ?>
- ベストアンサー
- PHP
- #1062 - Duplicate entry '1' for key 'PRIMARY'
利用していた幾つかのテーブルの中身だけを消去してしまいました。 ダンプデータを取ってあったので、復元させようとしたら、 下記エラーとなりました。何回か試している内、最終的にはうまくいったのですが、下記エラーは、どういう意味だったのでしょうか。 #1062 - Duplicate entry '1' for key 'PRIMARY' <補足> ・テーブル自体は消失していなかったので、データが消失したテーブル部分のみ、phpMyAdminのSQL欄にSQL文を書いて、テーブルごとにINSERT 文を実行した。 <知りたいこと> ・エラーの意味
- ベストアンサー
- MySQL
- for 文内の重複する'$'の書き方がわかりません。
for 文内の重複する'$'の書き方がわかりません。 ''や[]や{}や()の使い方が悪いらしく 「$内に$をおく場合」 にどうしてもエラーになってしまいます。 問題は下記の <---- の部分です。 SQL部分はあまり気にしないでください。構文など間違いがあるかもしれません。 $sql = "select * from tapes where mem_no = '$mem_no; $result = mysql_query($sql, $con); $row = mysql_fetch_array($result); for ($i=0; $i<20; $i++) { $row1[sname'$i'] = $row[sname'$i']; <------- ここの記述方法を教えてください } フィールドが以下のようになっているため for文でルーをさせて $iの添え字をうまく使いたいのです。 <input name="sname0" type="text" size="20" value="<? echo $row1[sname0]; ?>"> <input name="sname1" type="text" size="20" value="<? echo $row1[sname1]; ?>"> <input name="sname2" type="text" size="20" value="<? echo $row1[sname2]; ?>"> . . . <input name="sname19" type="text" size="20" value="<? echo $row1[sname19]; ?>"> きっと簡単すぎる質問ですいません。 散々試しているのですがうまくいきません。よろしくお願いします。
- ベストアンサー
- PHP
- jQuery for内にある配列の後のドットは何?
jQuery(?) for文内で、配列の後にドット演算子があるのですが、これは何でしょうか? for ( var i=0, len=hoge.length; i<len; i++ ) { hoge[i].max = 5; hoge[i].count = i; } ・maxはどこにある(属している)のでしょうか? ・hoge配列内? ・そもそもmaxは変数? ・ちなみに、hogeは、getElementsByClassNameで取得しています ・この場合のドット演算子は、セレクタの一種? ・変数に格納しているわけではなくて、DOMを操作しているだけ?
- ベストアンサー
- JavaScript
- php postgres Insert と updateができない
こんにちは、 現在、php5とpostgresql8でプログラムを行っています。 それで、 $sql = "INSERT INTO t_hoge (name) VALUES('hogesan')"; pg_exec($sql) と、テーブルにデータを入れているんですが、 エラーはでないのに何故かデータがテーブルにインサートできません。 また、アップデートで編集もできません。 しかし、SELECTで既に入力されているデータを読んでprint等で表示させると普通にデータは取れています。 また、telnet等で直接postgresに hoge=> INSERT INTO t_hoge (name) VALUES('hogesan'); と入力するとデータが挿入できます。 なにが問題なんでしょうか。 権限が問題なのでしょうか。 ちなみにテーブル作成するときは CREATE TABLE t_hoge ( name TEXT PRIMARY KEY, info TEXT ); としています。 なにか思い当たる節があれば助言していただきたいのですが。
- ベストアンサー
- PHP
- countのスピード
DBはMySQL/PostgreSQLがメインで、はじめてOracleを触っています。 現在、70万件のデータのあるテーブルを select count(*) from テーブル名 と SQL*Plusで実行してみたところ、結果がかえってくるまで 7秒近くかかってしまいました。 (*)が悪いのかな、と思って count(hoge) にしてみましたが、 大差がありません。。。。 テーブルは、number型の項目が10個、varchar型の項目が2個と それほど大きくはなく、そのうち5つのnumber型の項目に インデックスが貼られています。 count(hoge)で、hogeにインデックスの貼られている項目、貼られていない項目をそれぞれ試してみましたが、これも大差のない時間がかかっていました。このDBはもちろん、オラクルに接続しているのは私1人のみ、という状況です。 70万件というデータ数は決して多い数字ではないと思うのですけれど、オラクルだとこんなものなのでしょうか?オラクルは始めてで、びくびく触っていることもあって、何から手を付けていいのかもさっぱりです。どんな点を見直せばいいのか、教えてください(_ _)
- ベストアンサー
- Oracle
- クリックカウンタ
クリック(送信)ボタンとカウント数を表示するindex.php カウント処理をするcounter.php カウント数を保存するdata.php index.phpにはカウンタを複数設置します。 送信するときにname=個別ID、value=そのIDの現在のカウンタ数+1 表示するときはdata.phpから対応するIDの数を表示します index.phpからcounter.phpにpostかgetで送信する。 送信はAjaxで行っていますので気にしないでください。 例index.phpでdata.phpを読み込み なんらかの方法でhoge1、huge2のクリック数を表示 今現在hoge1は20クリックとする hoge1の送信でcounter.php?hoge1=21 と送ると $_GET[hoge1]=21をdata.phpのhoge1の部分を21に更新する というような動作を実現したいのですが、ファイル操作やこういう場合の保存方法がわかりません(PHP暦二日目) クリックカウンタがひとつだけならアクセスカウンターの要領でいけるのですが・・・ 何かききたいことがあれば理解できる範囲で精一杯答えます。よろしくお願いします。
- 締切済み
- PHP