2011-12-16 13 views
0

以下のクエリは、$submissionidの値が1つのみのページにあります。したがって、フィールドpointsには1つの値しかありません。クエリからの結果をPHP変数に変換する

以下のクエリのpointsを通常のPHP変数に変換するにはどうすればよいですか?

$sqlStra = "SELECT points, submissionid 
       FROM submission 
       WHERE submissionid = '$submissionid'"; 

EDIT:これは、MySQLデータベースから引っ張っています。

EDIT II:pointsは、whileループの内部だけでなく、ページ全体の変数と同じにします。

+0

さて、あなたはどのように最初の場所でクエリを実行しますか?また、 '$ submissionid'の値を(おそらく' intval'?で)サニタイズしない限り、このクエリはSQLインジェクションに対して脆弱であることに注意してください。 – Jon

+0

答えは、使用しているデータベースとデータベースライブラリによって大きく異なります。 – James

答えて

0

私はSQL注入の可能性を排除するためにORMライブラリ(私はKohanaにバンドルされているものを使用します)を使用します。しかし、データベース接続が既に確立されていると仮定すると、このコードはあなたが探しているものを行います。

$resource = mysql_query("SELECT points, submissionid FROM submission WHERE submissionid = '$submissionid'"); 
$result = mysql_fetch_assoc($resource); 
echo $result["points"]; 

MySQLデータベース接続が確立されていない場合は、mysql_connectをチェックしてください。

0

さて、あなたはそのように、そのクエリからリソースを取得し、mysql_fetch_assocにそれを与えたいと思うでしょう:

$res = mysql_query($sqlStra); 

// If you **Know for sure** you'll only have one row: 
$row = mysql_fetch_assoc($res); 
$points = $row['points']; 

//Otherwise, you're going to need to loop. 
$array_of_all_points = array(); 

while ($row = mysql_fetch_assoc($res)) { 
    // $row['points'] now has what you want. You can assign it normally, or can use 
    // extract($row) to turn it into $points, which I would advise against personally. 
    $points = $row['points']; 
    $array_of_all_points[$row['submissionid']] = $row['points']; 
} 

echo $points; // This will be the last $row['points'] that was executed. 
echo $array_of_all_points['thatsubmissionid']; // Will output the points for the given session id. 

$のsubmissionidは、ユーザの入力から来た場合も、そのクエリは(安全ではありませんそれはSQLインジェクションに脆弱です)、ORMライブラリにはiloveitalyと記述する必要があります。コメントが指摘するように、あなたが実際にMySQLを使用している場合、これは依存

編集(それは技術的にそれ自体でORMていないものの、私は、Zend DBを使用します)。そうでない場合は、PDO libraryを使用してクエリを実行できます。

+0

@ Cthos:whileループの内部だけではなく、ページ全体の変数と等しくなるように 'points'したいと思います。 – John

+0

@John - 右... whileループは現在のスコープにスコープされています。 – Cthos

+0

whileループ内で '$ row ['points'] = $ points'と言うと@ Cthos、 $ points'はループの外側にありますか? – John

1

このようにして、クエリから返されたすべてのポイントを読み取ることができます。

while ($row = mysql_fetch_array($sqlStra, MYSQL_ASSOC)) { 
    $points = $row["points"]); 
} 
+0

'mysql_fetch_array'は、クエリではなくリソース(http://www.php.net/manual/en/language.types.resource.php)を受け取ります。 http://php.net/manual/en/function.mysql-fetch-array.php – Cthos

0
$sqlStra = "SELECT points FROM submission WHERE submissionid = ?"; 

$statement = $connection->prepare($sqlStra); 
$statement->bind_param('i', $submissionid); 
$statement->bind_result($points); 
$statement->execute(); 
$statement->fetch(); // this will create/populate $points 
関連する問題