0

データベースを更新しようとしています。完璧に接続できます。私の問題は、特定のユーザー (Web サイトを使用しているユーザー) を更新しようとしたときに発生します。コードに人のIDを伝えると、正しい場所で更新されます。そのような...

$id = '1';

しかし、私がこれを行うとき

$id = "select id from users where fname=$fname and lname=$lname";

何も起こらず、エラー メッセージも表示されません。なぜうまくいかないのかわからないので、これは私に夢中です。コード全体は、これが機能しない理由を誰かが知っているかどうかを確認するためにここにあります。ヒントをくれた人に感謝します。

<body>
    <h1 id="title"> Quiz </h1>
    <?php
        session_start();

        $connection = mysql_connect("mysql15.000webhost.com", "a4987634_quiz", "***********")
        or die (mysql_error());

        mysql_select_db("a4987634_quiz", $connection)
        or die (mysql_error());

        $fname = $_SESSION['fname'];
        $lname = $_SESSION['lname'];
        $id = "select id from users where fname='matthew' and lname='briant'";

        $answer = $_POST['answer'];

        if(isset($_POST['answer']) &&
        $_POST['answer'] == 'public enemy')
        {
    ?>
    <h3 id = "correct"> Correct </h3>
    <?php

        $sqlcorrect = "UPDATE users SET q1 = 'correct' WHERE id = $id";

        mysql_query($sqlcorrect);
        (mysql_error());

        }
        else {
    ?>
    <h3 id = "incorrect"> Incorrect </h3>
    <?php

        $sqlwrong = "UPDATE users SET q1 = 'wrong' WHERE id = $id";
        mysql_query($sqlwrong);
        (mysql_error());

        }
    ?>
</body>
</html>

fname と lname も表示されるので、これがどのように機能しないのかわかりません。

4

3 に答える 3

0

...しかし、私がこれを行うとき

$id = "select id from users where fname=$fname and lname=$lname";

これが何もしないことはわかっていますが、文字列を変数に代入していますよね?

必ず

  • クエリを実行する$result = mysql_query("SELECT whatever FROM wherever")
  • 結果を取得するmysql_fetch_row($result)
  • 更新クエリで使用します

または、より良い UPDATE スクリプトを作成することもできます。

$updateSQL = "UPDATE users SET q1 = 'correct' WHERE lname=$lname and fname=$fname";

この単一のコマンドを実行すると、指定された名前属性を持つすべてのユーザーに対して q1 を「正しい」に設定できます。

于 2012-10-27T07:58:41.873 に答える
0
$Id = mysql_fetch_array(mysql_query("select id from users where fname='matthew' and lname='briant'"));
$id=$Id['id];

このように置き換えます

于 2012-10-27T08:00:12.697 に答える
0

これを試して

$sql = "select id from users where fname='matthew' and lname='briant'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$id = $row['id'];

$sqlcorrect = "UPDATE users SET q1 = 'correct' WHERE id = ".$id;
//or 
//subquery
$sqlcorrect = "UPDATE users SET q1 = 'correct' WHERE id = (select id from users where fname='matthew' and lname='briant');
//use 'in' if subquery return more than one result
$sqlcorrect = "UPDATE users SET q1 = 'correct' WHERE id in (select id from users where fname='matthew' and lname='briant');
于 2012-10-27T08:00:33.090 に答える