Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/MySQL-更新查询_Php_Mysql_Cs Cart - Fatal编程技术网

PHP/MySQL-更新查询

PHP/MySQL-更新查询,php,mysql,cs-cart,Php,Mysql,Cs Cart,我正在尝试修复CS Cart中的一些SQL查询,以便更好地使用它们的内置查询,下面的工作将进一步在代码中循环并显示产品 $getOrder=db_get_fields("SELECT * FROM ?:orders WHERE total='".$orderSum."' AND email='".$email."' AND status IN('P','C','O') "); $orderProducts = db_get_fields("SELECT product_id FROM cscar

我正在尝试修复CS Cart中的一些SQL查询,以便更好地使用它们的内置查询,下面的工作将进一步在代码中循环并显示产品

$getOrder=db_get_fields("SELECT * FROM ?:orders WHERE total='".$orderSum."' AND email='".$email."' AND status IN('P','C','O') ");
$orderProducts = db_get_fields("SELECT product_id FROM cscart_order_details WHERE order_id='".$getOrder[0]."'");
但我试着用以下方法写作:

然而,它只返回1个产品,所以我在某处犯了一个错误,不知道是什么?有人有什么想法吗?我对PHP和MySQL相当陌生

$getOrder = db_get_fields("SELECT * FROM ?:orders WHERE total = ?i AND email = ?s AND status IN ('P','C','O')", $orderSum, $email);
$orderProducts = db_get_fields("SELECT product_id FROM ?:order_details WHERE order_id = ?a", $getOrder[0]);
使用循环更新并检查:

$acId = $_REQUEST['id'];

$productsGet = db_get_field("SELECT cart FROM ?:abandoned_cart WHERE user_id = ?s", $acId);
$products = unserialize($productsGet);

$cartProducts=array();
if (is_array($products) || is_object($products)){
  foreach($products as $pData){
    $cartProducts[]=$pData['product_id'];
  }
}
if(!array_diff($cartProducts,$orderProducts)){
  $products=array();
}
哦,这里是输出部分,但这是新查询的问题

if (!empty($products)) {
  foreach ($products as $product) {
    $text .='
      <tr>
        <td><a  href="http://'.$_SERVER['SERVER_NAME'].'?dispatch=products.view&product_id='.$product['product_id'].'"> <img title="" height="120" width="120" alt="" src="'.$product['main_pair']['detailed']['image_path'].'"></a></td>
        <td><a href="#" style=" font-weight:bold; color:#333; font-size:13px; text-decoration:none;">'.$product['product'].'</a><a href="#">&nbsp;<i></i></a><div style=" font-weight:bold; color:#333; font-size:12px; margin-top:4px; text-decoration:none;"> CODE: <span>'.$product['product_code'].'<!--product_code_update_2512012004--></span> </div></td>
        <td style=" text-align:center;"><span style=" font-weight:bold; color:#333; font-size:12px; margin-top:4px; text-decoration:none;">$</span><span style=" font-weight:bold; color:#333; font-size:12px; margin-top:4px; text-decoration:none;">'.$product['price'].'</span> </td>
        <td><div style="display: inline-block;vertical-align: top;width: 56px;"><input type="text" disabled value="'.$product['amount'].'" size="3"  style="border:1px solid #c2c9d0; box-shadow:0 1px 3px rgba(0, 0, 0, 0.1) inset; border-radius:3px; float: left;height: 33px;text-align: center;width: 36px;"></div></td>
        <td style="font-size:14px;  font-weight:bold; color:#333; text-align:center; font-size:13px; text-decoration:none;"><span>$</span><span stye=" color:#000;">'.$product['price']*$product['amount'].'</span> </td>
      </tr>';
    $sum =$sum+$product['price']*$product['amount'];
  }
}
if(!empty($products)){
foreach($products as$product){
$text.='
代码:'.$product['product_CODE'].'
$'.$product['price'].'
$'.$product['price']*$product['amount'].'
';
$sum=$sum+$product['price']*$product['amount'];
}
}

Ok发现了问题,非常简单

$orderProducts = db_get_fields("SELECT product_id FROM ?:order_details WHERE order_id = ?a", $getOrder[0]);

a>s

在第一个查询中,您使用的是?i,它表示一个整数,但是CS Cart将total存储为浮点数。这不是最好的解决办法

您的第一个查询应该是:

$getOrder = db_get_row("SELECT * FROM ?:orders WHERE total = ?i AND email = ?s AND status IN ('P','C','O')", $orderSum, $email);
第二点:

$orderProducts = db_get_row("SELECT product_id FROM ?:order_details WHERE order_id = ?i", $getOrder['order_id']);
另外,我建议您使用
db_get_row()
函数,如果您只想从数据库中获取一行,因为CS Cart会将其转换为关联数组,其中键是字段名。因此,您的代码将更具可读性


如果您查看官方文档,如果您想在一组文档中查找某些内容,可以使用?a。例如,
db_query('SELECT*FROM?:订单id在(?a)$order_id中的订单)

我将更新循环的其余部分,2 secsSorry the foreach,它检查orderProducts和cartProducts,正如我所说的,它可以很好地处理第一批查询,而不是我重新编写的查询。我尝试了上面的方法,并在第80行获得了:ndefined index:order\u id in/home/ambcom/public\u html/staging/beanbags/app/addons/audded\u cart\u extended/controllers/backend/ac.php,referer:
$getOrder = db_get_row("SELECT * FROM ?:orders WHERE total = ?i AND email = ?s AND status IN ('P','C','O')", $orderSum, $email);
$orderProducts = db_get_row("SELECT product_id FROM ?:order_details WHERE order_id = ?i", $getOrder['order_id']);