我正在努力将参数('User_ID')从PHP页面传递到MySQL DB中的View(SELLER_INFORMTION)。你可以指导我。
以下代码:
<?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 :(得分: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
子句中与其进行比较。
答案 1 :(得分:0)
另一种可能的选择是,您可以通过创建一个函数来从会话变量获取值来以简单的方式将参数传递给视图。有关该技术,请参阅https://www.stackoverflow.com/questions/14511760。这是我可能希望在之后模式化的创建功能的副本。 DELIMITER //
创建功能fn_getcase_id()
返回MEDIUMINT(11)
决定没有SQL
BEGIN
RETURN @sv_case_id;
END //
DELIMITER; 您需要创建一个类似的FN(每个变量一个)。