トップページ⇒php
949コメント332KB

PHP + MySQL

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001ECY NGNG
そろそろPHP + MySQLについても語ってほしい脳
0925nobodyさん03/06/28 13:00ID:???
MySQL初心者の質問です。

数値型のワイルドカードというのはあるのでしょうか?
つまり
select * from table where int >= ○○○;
のような文で、○○○にワイルドカードを入れると常に結果が真になるようなものです。
ご教示願います。
0926nobodyさん03/06/28 15:55ID:???
>>925
MySQL以前に「数値型のワイルドカード」って何(数学の問題)?

常に結果が真が欲しいなら"1"とか"1 = 1"とでも書けば良い。
そもそもWHERE節を使う必要もない。
NULLを外したい(数値との条件)のなら、"IS NOT NULL"

○○○の部分だけを変えて動作を切り替えようとしてるから、どうして良いか
判らなくなってるんだと思うけど、普通WHERE以降の条件部分全てを変えるか、
WHERE節ごと変化(付けたり付けなかったり)させる。
092792503/06/28 16:24ID:???
>>926
お返事ありがとうございます。

現在PHPの演習として、HTMLでフォームを作りそこのフォームから送られてきた数値を
SQL文に組み込んで検索させて結果を表示するWebDBを作っています。
で、
$sql = "select * from table1 where percentage >= ". $_POST["percentage1"] ." and percentage <= ". $_POST["percentage2"] ."";
のようなSQL文を作ったのですが、フォームから空白が送られてきた場合にすべてのデータが
HITするようなSQL文を変数の値のみを変更することによって作りたかったのです。

926さんの言うとおり
>○○○の部分だけを変えて動作を切り替えようとしてるから、どうして良いか
>判らなくなってる
ですね。

ご助言ありがとうございました。
とりあえず空白が送られてきたときに条件分岐させて別のSQL文を送るようにしようかと
思います。
0928nobodyさん03/06/28 16:55ID:???
>>927
演習だからまあ良いけど、公開しようがしまいが多少なりとも
外に繋がるところに置くなら、ユーザからの入力値をそのままSQLクエリに使っちゃ駄目。
最低でも数値ならPHPでintval関数などを通すとか、is_numeric関数で検証するなどして
期待している通りの値なのか確実にしてから使う。

http://jp.php.net/manual/ja/security.database.php#security.database.sql-injection
他にも"SQL セキュリティ"をキーに探すと参考になるページが見つかると思うので
調べて、危険性について理解しておくこと。
0929ショシンシャ03/06/30 11:31ID:???
HOGEというフィールドの一番ケツのセルのデータを取り出すには、
select * from test where HOGEのあとになにをいれたらいいんでしょうか。
0930nobodyさん03/06/30 12:31ID:???
>929
HOGE 内の一番右側の文字を取り出すの?
それとも一桁目の数字?
0931ショシンシャ03/06/30 12:36ID:???
>>930
レスさんくすでつ。
HOGE内にはユーザーIDをあらわす数字があって、
実はその数字に1をたして次に登録する人のID番号に
したいんでつ。おながいします。
0932ショシンシャ03/06/30 12:40ID:???
$sql_id = "SELECT * FROM test WHERE HOGE??";//ケツの番号
$id = $sql_id + 1;
$insert = mysql_query("INSERT INTO membertbl VALUES ($id,$passwd,....

みたいなかんじでつ。
0933ショシンシャ03/06/30 12:42ID:???
ああぁ
3行目
$insert = mysql_query("INSERT INTO test VALUES ($id,$passwd,....
でした。

0934nobodyさん03/06/30 12:49ID:???
DB板行ってる?
0935nobodyさん03/06/30 12:49ID:???
>ユーザーIDをあらわす数字があって、実はその数字に1をたして次に登録する人のID番号に
したいんでつ

そのユーザーIDはユニークで、新規登録者に今まで使ってたID+1の
IDを使わせるってことだよね??
idフィールドをauto incrementにするんじゃだめなの?
0936nobodyさん03/06/30 12:52ID:???
>今まで使ってたID
今まで使ってた一番大きな数のID
0937nobodyさん03/06/30 14:03ID:???
IDというフィールドを別に作れ。
0938ショシンシャ03/06/30 14:57ID:???
レス有賀トン。
オートインクリメント!(・∀・)
さすがでつ。ありがとうごいますた。
0939nobodyさん03/07/06 21:31ID:7NRYAhNq
PHP(4.3.2)+mysql(3.23.57)+phpMyAdmin(2.5.0)+win2000です
phpMyAdminからレコードの追加をすると、phpMyAdminのレコードが文字化けします。
mysql(dos窓)のselectで見ると正常です

色々しらべていじってみたけどわからないです。
↓関係ありそうなphp.iniの設定
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
↓my.iniの設定
[mysqld]
default-character-set=ujis
[mysql]
default-character-set=ujis
[mysql-dump]
default-character-set=ujis
phpMyAdminは(ja-euc)で表示させてます。
0940nobodyさん03/07/06 22:49ID:???
全部はずして、ゆっくり考えてみろ。
0941nobodyさん03/07/07 01:38ID:lhtnLc4P
>939
MySQLとPHPで基本としたい文字コードはなに?
094293903/07/07 23:18ID:???
>>940
mbstring.http_output = SJIS
をコメントアウトしたらOKでした

>>941
とりあえず出来たみたいです
レスありがとうございました
0943山崎 渉03/07/15 11:08ID:???

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0944nobodyさん03/07/23 19:42ID:c/+uzDLa
テーブルA
id b c
1 1 1
1 1 5
2 1 2
3 5 1
3 1 2
3 2 0
↓
id b*c
1 6
2 2
3 7
と言った感じに 同IDのb*cを足した数を取得したいのですが

SELECT SUM(b*c) from A GROUP BY id
こう書くと
下のように同じIDのBが足された数に、同idの最後のcを掛けた数が返ってきます

id b*c
1 10
2 2
3 0

どこを直せば良いのか検討もつきません、誰か助けて
094594403/07/23 20:23ID:c/+uzDLa
>>944
自己解決しました。
0946nobodyさん03/08/10 03:00ID:fzrQOeyO
webarenaのsuite2使ってるんですが、
サイトのipは*.*.*.100
なのに、
別鯖のmysqlにアクセスすると、ipが
*.*.*.2になります。
これはモジュール版だからでしょうか?
別のバーチャルホストのphpも*.*.*.2で走ってるとすると、
ちょっとセキュリティー的にどう? と思うのですが
(もちろんパスはかけていますが)
こんなものなのでしょうか。
0947_03/08/10 03:03ID:???
http://homepage.mac.com/hiroyuki45/jaz08.html
0948山崎 渉03/08/15 22:38ID:???
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0949nobodyさん03/08/18 00:26ID:I4OY3KuJ
pconnectを使った方が効率が良くなるリクエスト数の目安みたいなものはありますか?
xreaで昨日pconnect使ってみたところ負荷が上昇したので…

デイリーアクセスが6000程度、リクエスト数が300000程度
リクエストの7〜8割がMysqlを利用するCGIです
レス数が900を超えています。1000を超えると表示できなくなるよ。