1

PHP を使用して複数の Mysql クエリを実行する必要があります。私はサイトを持っていて、データベースからすべての情報を引き出します

$sql = "SELECT * FROM $table WHERE ID=$escape";
$query = mysql_query($sql) or die(mysql_error());
$rentals = mysql_fetch_assoc($query);

これで、前のボタンと次のボタンに対しても実行する必要がある 2 つのクエリが他にありました。

$sqlPrev = 'SELECT `id` FROM `table`
        WHERE `id` < '$curId' AND `catId` = '$curCat'
        ORDER BY `id` DESC LIMIT 1;

$sqlNext = 'SELECT `id` FROM `table`
        WHERE `id` > '$curId' AND `catId` = '$curCat'
        ORDER BY `id` ASC LIMIT 1;

これらを PHP MyAdmin で実行するときは正しくコーディングできますが、Web サイト経由で実行しようとすると、mysql エラーが発生します。

4

4 に答える 4

1

問題は、$sqlPrev と $sqlNext の ' の代わりに " です。{$curID} は "" でのみ機能します。また、末尾の " または ' はありません。

于 2012-07-27T21:09:46.407 に答える
0

mysql_query一度に実行できるクエリは1つだけです。

基本的には、に3回呼び出す必要がありますmysql_query

$sql = "SELECT * FROM $table WHERE ID=$escape";
$query = mysql_query($sql) or die(mysql_error());
$rentals = mysql_fetch_assoc($query);

$sqlPrev = 'SELECT `id` FROM `table`
        WHERE `id` < ' . $curId . ' AND `catId` = ' . $curCat . '
        ORDER BY `id` DESC LIMIT 1';

$sqlNext = 'SELECT `id` FROM `table`
        WHERE `id` > ' . $curId . ' AND `catId` = ' . $curCat . '
        ORDER BY `id` ASC LIMIT 1';

$resultPrev = mysql_query($sqlPrev);
$resultNext = mysql_query($sqlNext);

// todo: check that the above queries executed successfully
// if (!$resultPrev) echo mysql_error();

if (mysql_num_rows($resultPrev)) {
    $prev = mysql_fetch_array($resultPrev);
    $prevId = $prev['id'];
} else {
    $prevId = null; // there is no previous item
}

if (mysql_num_rows($resultNext)) {
    $next = mysql_fetch_array($resultNext);
    $nextId = $next['id'];
} else {
    $nextId = null; // there is no next item
}
于 2012-07-27T21:12:03.043 に答える
0

おそらく.、文字列リテラルと変数の間に連結演算子 ( ) を追加する必要があります。(Perl では必須です。PHP でも同じことを行います。)

$sqlPrev = 'SELECT `id` FROM `table`
    WHERE `id` < '.$curId.' AND `catId` = '.$curCat.'
    ORDER BY `id` DESC LIMIT 1';

データベースに送信されている SQL テキストをエコーし​​ます。それによって問題が明らかになります。

于 2012-07-27T21:16:20.943 に答える