0

これは実行しようとしているmysqlコードimです:

SELECT i.id, i.courseid, i.title, i.info, i.lasteditedby, u.id, u.forename, u.surname
FROM courseinformation as i JOIN users AS u ON (i.lasteditedby = u.id)
WHERE i.courseid = :courseid
ORDER BY i.id desc LIMIT 2;

このエラーが発生しました:

/* SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':courseid ORDER BY i.id desc LIMIT 2' at line 1 */

私の目的は、CourseInformationテーブルからid、courseid、title、info、lasteditedbyを取得し、次にuserテーブルからId、forename、surnameを取得することです。ユーザーIDがlasteditedbyと同じである場合。

私が使用したので、どのSQL構文が間違っているのか本当にわかりません

:courseid

iveが実行する他のpdosqlクエリで


参考までに、これはそのSQLを使用した私のPHPコードです

        $courseid = 'G11111';
        $sql = "SELECT i.id, i.courseid, i.title, i.info, i.lasteditedby, u.id, u.forename, u.surname FROM courseinformation as i JOIN users AS u ON (i.lasteditedby = u.id) WHERE i.courseid = :courseid ORDER BY i.id desc LIMIT 2";
        $sql->bindParam(":courseid", $courseid);
                    $sql->execute();

        foreach ($db->query($sql) as $row) {
            echo '<div class="announceTitle">';
            echo $row['title'].'<br />';
            echo $row['forename'].' '.$row['surname'].'<br />';
            echo '</div>
                <div class="announceText">';
            echo $row['info'];
            echo '</div>
                <br />
                <br />';
        }

誰かが私に何が悪いのかについての方向を教えてもらえますか?読んでくれてありがとう

4

1 に答える 1

0

ステートメントハンドルを作成していません。文字列を作成しました。

チュートリアルではこれを推奨しています:

$sth = $db->prepare("SELECT i.id, i.courseid, i.title, i.info, i.lasteditedby, u.id, u.forename, u.surname FROM courseinformation as i JOIN users AS u ON (i.lasteditedby = u.id) WHERE i.courseid = :courseid ORDER BY i.id desc LIMIT 2");
$sth->bindParam(":courseid", $courseid);

後でこの文字列を実行すると$db->query、エラーが発生します。これは、同時に適用されているいくつかの矛盾する手法のように思われるため、おそらくより良い例が必要な兆候です。

于 2013-03-05T20:49:56.540 に答える