0

わかりましたので、問題があります。製品 ID の配列を以下の SQL ステートメントに渡す必要があります。

$index = 0;
  $products = $cart->get_products();
  for ($i=0, $n=sizeof($products); $i<$n; $i++) {
   $prod = $products[$index]['id'];

 if (strpos($prod,"{")){
 $product = preg_split("^[{}]^",$prod);
 }else{
 $product = $prod;
 }
 }
$product_query = tep_db_query("select cb.products_id, SUM(cb.customers_basket_quantity),SUM(p.products_rate)  from " . TABLE_PRODUCTS . " p INNER JOIN " . TABLE_CUSTOMERS_BASKET . " cb ON p.products_id = cb.products_id   
WHERE cb.customers_id ='" . $customer_id ."'
AND p.products_id IN '".$product ."'
");

結果は常に

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 ''Array'' at line 3

製品から cb.products_id, SUM(cb.customers_basket_quantity),SUM(p.products_rate) を選択 p INNER JOIN customers_basket cb ON p.products_id = cb.products_id WHERE cb.customers_id ='3' AND p.products_id IN 'Array'

4

3 に答える 3

2

((PDO パラメータなどの代わりに) 自分で作成する場合は、SQL に何を挿入するかに非常に注意してください!)

$product が配列であることを確認します。

$product = (array)$product;

そして、その値をエスケープします。

$product = array_map('your_db_escape_function', $product);

そして、それを文字列化します:

$product = "'" . implode("', '", $product) . "'";

そして、それをクエリに追加します。

"... p.products_id IN (" . $product . ")"

コードを編集した後、これがあなたが望むものだと思います:

$products = $cart->get_products();
$productIds = array_map(function($product) {
    return (int)$product['id'];
}, $products);
$productIds = implode(', ', $productIds);

$query = tep_db_query("
    select cb.products_id, SUM(cb.customers_basket_quantity),SUM(p.products_rate)
    from " . TABLE_PRODUCTS . " p
    INNER JOIN " . TABLE_CUSTOMERS_BASKET . " cb ON p.products_id = cb.products_id
    WHERE cb.customers_id ='" . $customer_id ."'
    AND p.products_id IN (" . $productIds . ")
");
于 2013-03-02T19:35:37.057 に答える
0

IN (1, 2, 3, 4, 5)を使ってこのようにしますimplode(',', $product);

于 2013-03-02T19:34:05.600 に答える
0

わかりました!それは私が必要としていた変数だったので、今では読み取ります

$id = $this->rate($id);
   $qty = $cart->count_contents($id);

私の数式で適切な数量を返します!

于 2013-03-02T20:50:33.293 に答える