2014-01-09 63 views
0

我很努力地將PHP頁面中的參數('User_ID')傳遞給MySQL DB上的View(SELLER_INFORMTION)。你能指導我嗎?從PHP頁面傳遞參數到MySQL視圖

下面的代碼:

<?php 
session_start(); 
userid = $_SESSION['userid']; 
include '../Database.class.php'; 
$dbe_obj = new Database_Executer(); 
$query = "SELECT * FROM SELLER_INFORMATION('$userid')"; 
$data = $dbe_obj-> select_query_executer($query); 
?> 

CREATE VIEW SELLER_INFORMATION 
AS SELECT `PRODUCT`.PRODUCT_NAME,`CATEGORY`.CATEGORY_NAME,`SELLER_PRODUCT`.QUANTITY, 
`SELLER_PRODUCT`.UNIT_PRICE,`SELLER_PRODUCT`.CURRENCY 
FROM `PRODUCT`,`SELLER_PRODUCT`,`CATEGORY`,`USERS` 
WHERE SELLER_PRODUCT.Category_ID=CATEGORY.CATEGORY_ID 
    AND SELLER_PRODUCT.Product_ID = PRODUCT.PRODUCT_ID 
    AND SELLER_PRODUCT.User_ID=`USERS`.USER_ID 
    AND SELLER_PRODUCT.User_ID = '$userid' 
    GROUP BY 
    `PRODUCT`.PRODUCT_NAME,`CATEGORY`.CATEGORY_NAME,`SELLER_PRODUCT`.QUANTITY, 
    `SELLER_PRODUCT`.UNIT_PRICE,`SELLER_PRODUCT`.CURRENCY 
    ORDER BY `CATEGORY`.CATEGORY_NAME DESC 
+0

嘗試使用正確的SQL查詢語法。你需要一個'WHERE'子句。 – Barmar

+0

在userid中添加'$'符號 - '$ userid = $ _SESSION ['userid'];' –

+0

您的視圖沒有'USERID'列,應該如何使用'$ userid'來從中選擇? – Barmar

回答

2

更改您的視圖:

CREATE VIEW SELLER_INFORMATION 
AS SELECT DISTINCT 
      `PRODUCT`.PRODUCT_NAME, 
      `CATEGORY`.CATEGORY_NAME, 
      `SELLER_PRODUCT`.QUANTITY, 
      `SELLER_PRODUCT`.UNIT_PRICE, 
      `SELLER_PRODUCT`.CURRENCY, 
      SELLER_PRODUCT.User_ID 
FROM `PRODUCT` 
JOIN `SELLER_PRODUCT` ON SELLER_PRODUCT.Product_ID = PRODUCT.PRODUCT_ID 
JOIN `CATEGORY` ON SELLER_PRODUCT.Category_ID=CATEGORY.CATEGORY_ID 
JOIN `USERS` ON SELLER_PRODUCT.User_ID=`USERS`.USER_ID 
ORDER BY `CATEGORY`.CATEGORY_NAME DESC 

然後使用查詢:

SELECT * FROM SELLER_INFORMATION WHERE User_ID = '$userid' 

你不能有一個視圖定義內的PHP變量。您需要返回視圖列表的SELECT列中的列,以便您可以在WHERE子句中與其進行比較。

0

另一種可能的選擇是,您可以通過創建一個函數從會話變量中獲取值,以簡單的方式將參數傳遞給您的視圖。該技術見https://www.stackoverflow.com/questions/14511760。這是我的創建函數的副本,您可能希望在之後進行修改。 DELIMITER //

CREATE FUNCTION fn_getcase_id()
退貨MEDIUMINT(11) 確定性NO SQL BEGIN

看到stackoverflow.com/questions/14511760和兩次或更多次閱讀所有信息。 Wh是2017年4月13日

RETURN @sv_case_id; 

END //

DELIMITER; 您將需要創建一個類似的FN(每個變量一個)。