2012-08-08 68 views
0

在一些网站的模块,我有一个代码Drupal的模块MySQL错误

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... 

哪些错误,此代码?

+0

'''是一个问题......它缺乏条件 – Julien 2012-08-08 07:23:03

+0

的引号可以这是因为使用'123'而不是'123'? (行情) – Avdept 2012-08-08 07:32:36

回答

0

的问题是第一次查询的这个部分:

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

条件需要由ANDOR分开:

SELECT `added` FROM {q_cart} WHERE `uid` = %d AND `nid` = %d 
+0

你能告诉我哪种情况需要吗?我没有访问更多的代码,只有这个文件,但我不能说'或'或'和'应该在那里 – Avdept 2012-08-08 11:30:08

+0

很明显,我只是猜测,但我不认为'OR'在这种情况下会有意义。我想你试图根据它的节点ID和当前用户ID来获得产品的添加到购物车的时间(或者可能是数量)。如果这是真的,我会建议它应该是'AND' – Clive 2012-08-08 11:32:21

+0

谢谢,同样的想法,只是想确定一下,以避免更多的错误 – Avdept 2012-08-08 11:45:43