将参数从PHP页面传递到MySQL视图

时间:2014-01-09 08:41:06

标签: php mysql

我正在努力将参数('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

2 个答案:

答案 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

请参阅stackoverflow.com/questions/14511760并阅读所有信息TWICE或MORE。 wh 04/13/2017

RETURN @sv_case_id;

END //

DELIMITER; 您需要创建一个类似的FN(每个变量一个)。