スレッド表示 | フラット表示〕 全トピック 920 件中 78 番目 次≫ ≪前

SELECT文で取得した情報を配列に格納したいのですが・・

created: 2007-11-10 02:19 | modified: 2007-11-17 22:46 | reply: 7

[3987] SELECT文で取得した情報を配列に格納したいのですが・・

user: あおい | created: 2007-11-10 02:19
$sql_user_id ="SELECT user_id FROM fashion GROUP BY user_id";
$result_user_id = mysql_query($sql_user_id);
$datacount = count($result_user_id);
$array = $row["user_id"];
$user_id_array = reset($array);//配列の1番目を取り出す・・・①

これでやったら①でエラーがでてきてしまいました!
SELECT文で取得した情報
ex) user_id = 1,2,3,4,5
と取得できた場合
array[0]=1,array[1]=2,array[2]=3,array[3]=4,array[4]=5
といったような形で取得したい思っているのですが。。
やり方がわかりません。
教えてください!
reply: 3992 返信 編集 削除

[3992] 上に付け加えて質問です。。

user: あおい | created: 2007-11-11 03:57
あるSELECT文がありまして・・・

$row_query = mysql_query($sql_kensaku2);
$row_array = mysql_fetch_array($row_query);
$f_id_kensaku2 = reset($row_array); //①
$sql_kensaku2_result= "SELECT s_picture FROM pictures p_id ='".$f_id_kensaku2."'";
$f_id_kensaku2 = next($row_array);       //②


①では値が取り出せているのですが、②で値が取り出せないのです・・。
文法が間違っているのでしょうか。
教えていただきたいです。
Parent: 3987  reply: 3997 返信 編集 削除

[3997] Re.上に付け加えて質問です。。

user: ach | created: 2007-11-11 14:59
SQL関連のPHPマニュアルを読み直しませう
なんだかごちゃごちゃです

$sql_user_id ="SELECT user_id FROM fashion GROUP BY user_id";
//文法ミス。group byは集計関数(maxやcount)と組み合わせたときに使うべき
$result_user_id = mysql_query($sql_user_id); //$result_user_idはリソース型
$datacount = count($result_user_id);//自動方変換があるからエラーは出ないけど常に 1
$array = $row["user_id"]; //$rowはいつ定義されたんだ!
//仮にfetch_arrayで取得していたとして、その場合$row[行番号][列名]になる
$user_id_array = reset($array);//配列の1番目を取り出す・・・①
//というわけで$arrayは配列ではないのでエラー

3992のほうはクエリーを実行してfetchしてという手順が抜けてます
Parent: 3992  reply: 4000 返信 編集 削除

[4000] GROUP BYについて。。

user: あおい | created: 2007-11-11 20:10
ありがとうございます。
全然理解できていなくてすいません。

あのfashionテーブルのuser_idフィールドに

aoi
tetuji
kazuya
aoi
aoi
kazuya
tetuji

と入っていた場合にGROUP BYで

aoi
tetuji
kazuya

と取り出したいと思ったのですが、
$sql_user_id ="SELECT user_id FROM fashion GROUP BY user_id";では取れないのでしょうか。
achさんが集計関数で使うべき!と教えていただいたのでできないのかな・・と。。
もしできないのであればどの方法でできるのか教えて頂きたいです。

また、
$result_user_id = mysql_query($sql_user_id); //$result_user_idはリソース型
$datacount = count($result_user_id);//自動方変換があるからエラーは出ないけど常に 1

この自動方変換とはどういう意味なのでしょうか。
$result_user_id = mysql_query($sql_user_id); //$result_user_idはリソース型
$result_user_id_array = mysql_fetch_array($result_user_id);
$datacount = count($result_user_id_array);

だと結果習得できるのでしょうか。
教えてください。お願いします!
Parent: 3997  reply: 4001 返信 編集 削除

[4001] このようなものを書いたのですが・・

user: あおい | created: 2007-11-11 20:29
$sql_kensaku2 = $sql_kensaku2." user_id = '".$_SESSION["se_user_id"]."'";

if($result_kensaku2 = mysql_query($sql_kensaku2)){
$row_query = mysql_query($sql_kensaku2);
$row_array = mysql_fetch_array($row_query);
$f_id_kensaku2 = reset($row_array);
$sql_kensaku2_result= "SELECT s_picture FROM pictures p_id ='".$f_id_kensaku2."'";
    while($f_id_kensaku2 = next($row_array){
     $sql_kensaku2_result = $sql_kensaku2_result.",'".$f_id_kensaku2."'";
}
}

このような書き方はやはりおかしいですか?!
きちんとnext($row_array)でエラーがでるんです・・。
配列で次の値があったらwhile文を行うと書きたかったのですが・・。
Parent: 4000  reply: 4003 返信 編集 削除

[4003] DISTINCT

user: ach | created: 2007-11-13 00:58
>GROUP BY
質問が出てから「そういえば書き方を知らん」と思いリファレンスを漁りました
GROUP BYでは無く
SELECT DISTINCT a, b from foo

と書くそうです
a, bのセットのうち重複しているセットを除いたデータを返します
列のセットに対する形容詞のようで
SELECT a, DISTINCT b from foo

と書くとエラーになります

>自動変換
私の勘違いです。PHPは(文字列<=>数値の)型変換を自動でやってくれるのですが、
countに関してはこれは関係なくて、ただの仕様です
マニュアルを読むと配列以外が渡された場合について書いてあります。

$result_user_id = mysql_query($sql_user_id); //$result_user_idはリソース型
$result_user_id_array = mysql_fetch_array($result_user_id);
$datacount = count($result_user_id_array);
>だと結果習得できるのでしょうか。
SQLが間違ってなければたぶん取得できます。

4001はPHPの文法ミスかなぁ?
(書き写したときにミスっただけかも?括弧の位置とか数が……)
エラーが表示されているはずなのでそれを頼りにデバッグしてください。

#SQLを活用するともっと楽に書けそうな……
Parent: 4001  reply: 4039 返信 編集 削除

[4039] 2重のSELECT文結果取得

user: あおい | created: 2007-11-17 22:36
$sql1 = "SELECT words FROM log WHERE not word="$row1[word]" ORDER BY id DESC LIMIT 5";
$rst1 = mysql_query($sql1);

//取り出したwords5つをdatabaseテーブルのcount数が多い順5位を取り出して表示させたいのです。
while ($col1 = mysql_fetch_array($rst1)) {
$sql2 = "SELECT words FROM kensaku WHERE words=$cal1[words] ORDER BY count DESC LIMIT 5;
$rst2 = mysql_query($sql_log_sub);
Parent: 4003  reply: 4040 返信 編集 削除

[4040] 2重のSELECT文結果取得

user: あおい | created: 2007-11-17 22:46
間違えて途中でEnterキーを押してしまいました。

$sql1 = "SELECT words FROM log WHERE not word="$row1[word]" ORDER BY id DESC LIMIT 5";
$rst1 = mysql_query($sql1);

①回目のwhile文
//取り出したwords5つをdatabaseテーブルのcount数が多い順5位を取り出して表示させたいのです。
while ($col1 = mysql_fetch_array($rst1)) {
   $sql2 = "SELECT words FROM kensaku WHERE words=$cal1[words] ORDER BY count DESC LIMIT 5;
   $rst2 = mysql_query($sql_log_sub);
  
echo"ああ";
   2回目のwhile文・・2重ループ
   while($col = mysql_fetch_array($rst2)){   ・・※
 echo $col[words];
}
}

とすると結果がとってこれないエラーがでてしまいます。
「ああ」とは表示してくれてるのですが、
最後の2回目のwhile文にいってくれません。
541行目のエラーというのは※の所です。

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\xampplite\htdocs\reference.php on line 541
ああ

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\xampplite\htdocs\reference.php on line 541
ああ

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\xampplite\htdocs\reference.php on line 541
ああ

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\xampplite\htdocs\reference.php on line 541
ああ

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\xampplite\htdocs\reference.php on line 541


2重のSELECT文の結果を取得したいときこのような書き方だと取得できないのでしょうか。
教えていただきたいです。
Parent: 4039  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 78 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑