0

いくつかのサイトのモジュールに次のコードがあります

function q_cart_add($node) {
    global $user;
    //drupal_set_title('Добавление товара в корзину');
    drupal_set_title('Товар добавлен в корзину');
    if (!user_access('add to cart'))
        return '<p>У вас не достаточно прав для добавления в корзину</p>';
    if ($node -> type != 'kartochka')
        return '<p>В корзину можно положить только товар</p>';
    $added = false;
    if ($user -> uid) {
        $added = db_result(db_query('SELECT `added` FROM {q_cart} WHERE `uid` = %d, `nid` = %d', $user -> uid, $node -> nid));
        if (!$added) {
            db_query('INSERT INTO {q_cart} (`uid`, `nid`, `added`) VALUES (%d, %d, %d)', $user -> uid, $node -> nid, time());
        }
    } else {
        foreach (isset($_COOKIE['q_cart']) && ($cart = json_decode($_COOKIE['q_cart'])) ? $cart : array() as $item)
            if ($item -> nid == $node -> nid) {
                $added = true;
                break;

しかし、drupal(6)の管理パネルのレポートでエラーが発生しました:

    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 &#039; `nid` = 806&#039; at line 1 query: 
SELECT `added` FROM q_cart WHERE `uid` = 1, `nid` = 806 in file...

このコードの何が問題になっていますか?

4

1 に答える 1

0

問題は、最初のクエリのこの部分です。

WHERE `uid` = %d, `nid` = %d

AND条件はまたはで区切る必要がありますOR

SELECT `added` FROM {q_cart} WHERE `uid` = %d AND `nid` = %d
于 2012-08-08T08:08:53.643 に答える