3

これは私のテーブル構造です

id 名前 値
1 質問数 50
2 期間 120

今、私は名前に従って値を表示したい。SQLステートメントを正しく実行できません。これは私がやったことです:

$qry = "SELECT * FROM (
SELECT (SELECT value FROM pq_examsettings) as duration,
       (SELECT value FROM pq_examsettings) as questions
 ) ";
$result= mysql_query($qry);
$row = mysql_fetch_array($result);
$duration = $row['duration'];
$questions = $row['questions'];

$duration 変数と $questions 変数が 120 と 50 を表示するようにクエリを実行する方法を教えてください。

4

3 に答える 3

4

これを試してみてください。

SELECT  MAX(CASE WHEN name = 'questions' THEN value END) questions,
        MAX(CASE WHEN name = 'duration' THEN value END) duration 
FROM    pq_examsettings
于 2013-05-01T15:58:53.100 に答える
0

mysqli または pdo 関数を使用します。mysql_* 関数は公式に非推奨です。

$mysqli = new mysqli($dbserver, $dbmanager, $dbpass, $dbname);
if($mysqli->connect_errno) {
    echo "Error connecting to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

$query = $mysqli->query("SELECT * FROM pq_examsettings");
if($query->num_rows){
$new_row = array();
while($row = $query->fetch_assoc()){
    foreach($row as $key => $value){
        if($key == 'name'){
            $array_key = $value;
        }
        if($key == 'value'){
            $new_row[$array_key] = $value;
        }
    }
}
$duration = $new_row['duration'];
$questions = $new_row['questions'];
}
于 2013-05-01T15:59:03.643 に答える
0

行を列に転置し、結果を1回の選択で返す簡単な方法を知るには、MySQLに精通していません.JWがそれを行う答えを出したようです.

もう 1 つのオプションは、2 つのデータベース呼び出しを行うことです。

$qry = "SELECT value FROM PQ_EXAMSETTINGS WHERE NAME = 'duration'";
$result= mysql_query($qry);
$row = mysql_fetch_array($result);
$duration = $row['value'];

$qry = "SELECT value FROM PQ_EXAMSETTINGS WHERE NAME = 'questions'";
$result= mysql_query($qry);
$row = mysql_fetch_array($result);
$questions = $row['value'];
于 2013-05-01T16:05:34.203 に答える