3

わかりました基本的に、mysqlから内破した結果をphpで使用可能な変数に戻す方法がわかりません。配列は私をループに投げ込み、私を夢中にさせています。

データベースから動的に作成されているチェックボックス:

<input name="tournament_id[]" value="'.$row['tournament_id'].'" type="checkbox">'.$row['tournament_name'].'

投稿された値が内破します (SQL インジェクション防止はまだ実装されていません):

$got_tournament_id = implode(",",$_POST['tournament_id']);

これは、次のように mysql に挿入されます。

id   user_id   tournament_id
1    16942627  1,10

これは、内破したデータを取得するための私の mysql クエリです。

$query = ("SELECT tournament_id FROM tournament WHERE user_id=16942627");
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
$got_it = $row['tournament_id'];    
}
$bust_him = var_dump(explode(",", $got_it));
echo $bust_him;

上記の var_dump を使用すると、以下が返されます。

array(2) { [0]=> string(1) "1" [1]=> string(2) "10" }

ここで私は完全に迷子になり、配列から値 1 と 10 を個々の変数に取得するために何をすべきかわかりません。私はそれを行うためにいくつかの方法を試しましたが、エラーが発生したり、単語配列だけになったりしています。誰かが何かを与えることができるなら、私はいくつかの助けが必要です. 前もって感謝します。

4

1 に答える 1

7

var_dump()その目的はデバッグであり、コードや表示ロジックではありません。explode()intoの出力を保存するだけです$bust_him変な変数名です):

// Store the output of explode() directly
$bust_him = explode(",", $got_it);
// No need for individual variables, just access via array keys.
echo $bust_him[0];
echo $bust_him[1];
// etc...

固定数の要素がある場合は、list()変数に配置するために使用できます。

// You know you only have two, so you can use list()
// to store directly into variables
list($first, $second) = explode(",", $got_it);
echo $first;
echo $second;

長期的には、コンマ区切りの値をテーブルに格納するよりも優れた解決策は、適切に正規化された別のテーブルを作成して、 にリンクtournament_idすることuser_idです。次に、 ごとに複数の行がありuser_id、それぞれに が1 つ tournament_id含まれます。これにより、多くのインスタンスでのクエリがはるかにシンプルかつ効率的になり、COUNT()他の多くの利点の中でも特に集計の使用が可能になります。

于 2012-07-24T14:18:18.947 に答える