① ecshop操作資料庫有哪些方法
我們將結合eschop二次開發一些常見的開發例子.來談談ecshop的資料庫類和方法是如何處理資料庫。讓我們熟練掌握ecshop資料庫的操作.
全局資料庫實例化類 $GLOBALS['db']
1:ecshop的資料庫類實例子化對象為$db;表的實例化對象為$ecs
2:如何取得ecshop某個表中多行數據.該使用方法getAll()
$res =$db -> getAll();
3:如何取得ecshop某一行的數據.該使用getRow()方法,比如
$row = $db-> getRow();
4:如何取得某一列的值.該使用方法getCol()
$res = $db->getCol();
5:如何取得指定的位置的幾個數據.使用selectLimit()
比如取得從第10行起的5條數據
$db -> selectLimit($sql , 10,5);
6:修改和插入一個數組.該使用autoExecute()方法,而且必須是一個數組.
$db->autoExecute($ecs->table('link_goods'),$row, 'INSERT');也可以是UPDATE
8:如何獲得一個值得.使用getOne()
$name = $db -> getOne("select user_name from".$ecs->table('users')." where user_id = 1");
9:如何執行修改和刪除數據.使用query()也可以。
比如$db -> query("update".$ecs->table('users')." setuser_name = '222' where user_id = 33");
② ecshop資料庫訂單order_info 數據表 是如何把數據插進去的插入的sql語句在哪
alter table order_info add 供貨商ID 屬性;轎旁 屬性是供貨商ID這個屬性,洞鉛如果是ID,應納帆好該是number
③ ECSHOP修改商品分類後出現以下問題,求解決
用默認模板執行資料庫看看是不是數型散轎據庫造成的問題,如果不是,那就用默認的模板一點一點的往裡面拿,知道找到出問題的文件。。注意默認卜肆模板是沒掘賣有解決jquery與js沖突的
④ 我用 ecshop 做二次開發的時候 商品 缺貨 時,加入購物車出現報錯。testshop是資料庫名。大俠幫忙看一下
商品缺貨的時候加入購物車ecshop是彈出對話框提示缺貨的。薯談
但是您這個sql語句中
AND og.goods_id = ORDER BY oi.add_time DESC LIMIT 5
這個位置數攔碰里,goods_id顯然沒有傳過來。所以會報錯衡模
⑤ 我在虛擬機里裝好ECShop後想導入模板,點SQL查詢後復制顯示參數不合法怎麼解決呀
1,在網店信息的最下面商店公告文本域中看看是否有代碼,刪除就可以了
2,檢查下是否用了全形輸入。
3,打開 admin/sql.php 找到下面這段代碼,刪掉即可。如圖所示:
4,通過虛擬主機資料庫管理,phpmyadmin在裡面執行
⑥ 如何解決ecshop訂單修改價格後無法再次付款問題
該疑問的解決辦法是找到admin/order.php中的以下代碼
/**
* 更新訂單對應的 pay_log
* 假如未付出,修正付出金額;不然,生成新的付出log
* @param int $order_id 訂單id
*/
function update_pay_log($order_id)
{
$order_id = intval($order_id);
if ($order_id > 0)
{
$sql = "SELECT order_amount FROM " . $GLOBALS['ecs']->table('order_info') .
" WHERE order_id = '$order_id'";
$order_amount = $GLOBALS['db']->getOne($sql);
if (!is_null($order_amount))
{
$sql = "SELECT log_id FROM " . $GLOBALS['ecs']->table('pay_log') .
" WHERE order_id = '$order_id'" .
" AND order_type = '" . PAY_ORDER . "'" .
" AND is_paid = 0";
$log_id = intval($GLOBALS['db']->getOne($sql));
if ($log_id > 0)
{
/* 未付款,更新付出金額 */
$sql = "UPDATE " . $GLOBALS['ecs']->table('pay_log') .
" SET order_amount = '$order_amount' " .
"WHERE log_id = '$log_id' LIMIT 1";
}
else
{
/* 已付款,生成新的pay_log */
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('pay_log') .
" (order_id, order_amount, order_type, is_paid)" .
"VALUES('$order_id', '$order_amount', '" . PAY_ORDER . "', 0)";
}
$GLOBALS['db']->query($sql);
}
}
}
用以下坦皮代碼將其覆蓋
/**
* 更新訂單對應的 pay_log
* 假如未付出,修正付出金額;不然,生成新的付出log
* @param int $order_id 訂單id
*/
function update_pay_log($order_id)
{
$order_id = intval($order_id);
if ($order_id > 0)
{
$sql = "SELECT order_amount FROM " . $GLOBALS['ecs']->table('order_info') .
" WHERE order_id = '$order_id'";
$order_amount = $GLOBALS['db']->getOne($sql);
if (!is_null($order_amount))
{
$sql = "SELECT log_id, order_amount FROM " . $GLOBALS['ecs']->table('pay_log') .
" WHERE order_id = '$order_id'" .
" AND order_type = '" . PAY_ORDER . "'" .
" AND is_paid = 0";
$log_info =$GLOBALS['db']->GetRow($sql);
if ($log_info && $log_info['讓虛差order_amount'] == $order_amount)
{
$log_id = intval($log_info['log_id']);
/* 未付款,更新付出譽汪金額 */
$sql = "UPDATE " . $GLOBALS['ecs']->table('pay_log') .
" SET order_amount = '$order_amount' " .
"WHERE log_id = '$log_id' LIMIT 1";
}
else
{
/* 已付款,生成新的pay_log */
$sql = "INSERT INTO " . $GLOBALS['ecs']->table('pay_log') .
" (order_id, order_amount, order_type, is_paid)" .
"VALUES('$order_id', '$order_amount', '" . PAY_ORDER . "', 0)";
}
$GLOBALS['db']->query($sql);
}
}
}
⑦ ecshop訂單列印的時候如何獲得商品總數 如 序號 數量 1 1 2 2 3 3 合計 6
首頁的推薦商品包括熱銷推薦和促銷三個文件
只隱碰悶對熱銷商品為例
第一步:打開根目錄/includes/lib_goods.php文件。在文件末尾添加方法(需要注意這個方法如果添加過了就不要再添加了)
function selled_count($goods_id)
{
$sql= "select sum(goods_number) as count from ".$GLOBALS['ecs']->table('order_goods')."where goods_id ='".$goods_id."'";
$res = $GLOBALS['db']->getOne($sql);
if($res>0)
{
return $res;
}
else
{
return('0');
}
}
第二步:搜索get_recommend_goods方法
在這個方法中找到這句話
$goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']);
在這句話下添加 $goods[$idx]['count'] = selled_count($row['goods_id']);
第三步:在模版的library/recommend_hot.lbi中在需要的地方添加
<div class="index_hotbg">售出 <strong>{$goods.count}</strong> 瓶</div>
首頁分類下的商品,實現「已售出」。
統計銷售量的方法如下:
第一步:分類下商品也需要修改lib_goods.php。找到分類下的商品
assign_cat_goods方法。在
$goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']);句話下添加
$goods[$idx]['count'] = selled_count($row['goods_id']);
第二步:需要修改模版文件吵伏/library/cat_goods.lbi。在需要的地方添加
銷售量:{$goods.count}
在商品分類頁面調用已售出
第一步:灶彎修改根目錄下category.php
找到category_get_goods方法
函數中foreach循環添加
$arr[$row['goods_id']]['count'] = selled_count($row['goods_id']);
第二步:文件的最後部分添加函數
function selled_count($goods_id)
{
$sql= "select sum(goods_number) as count from ".$GLOBALS['ecs']->table('order_goods')."where goods_id ='".$goods_id."'";
$res = $GLOBALS['db']->getOne($sql);
if($res>0)
{
return $res;
}
else
{
return('0');
}
}
第三步:
在模版文件goods_list.lbi中需要的地方添加
銷售量:{$goods.count}
說明:搜索頁面需要修改search.php
⑧ ECShop後台商品列表無法添加新商品,提示MySQL server error。
是資料庫出錯,ecs_goods表
⑨ ECSHOP打開存在的商品詳情頁沒有問題,但是打開不存在的商品頁資料庫報錯,不返回404!
g.goods_id = 這後面缺少一個值
⑩ ecshop點擊商品分類提示資料庫錯誤
資料庫表缺少欄位了,應該是模板加過什麼插件了