![](/img/trans.png)
[英]How to check if some string is combination of values from two separate columns i.e tables PHP MySql
[英]How can I return mysql columns from separate tables with one stored procedure?
如果轉貼我真的很抱歉,我找不到答案。 我是MySql和PHP的新手,我正在嘗試編寫一個存儲過程,該過程從兩個單獨的表返回內容。 調用本質上是這樣的:
CREATE DEFINER=`root`@`localhost` PROCEDURE `grabPage`(t_user VARCHAR(32),
t_page VARCHAR(128))
BEGIN
SELECT formC FROM menuTable WHERE user=t_user;
SELECT formC FROM siteTable WHERE user=t_user AND page=t_page ORDER BY contentID;
END
這是看這個錯誤的方法嗎? 最佳做法是什么? 我要使用一個存儲過程執行此操作的原因是,我只需要對php中的數據庫進行一次調用即可。 該代碼看起來像這樣,如果我應該在php中處理它,我將如何去做呢?
$con = mysqli_connect("localhost", "dbusername", "dbpassword", "database");
$query = "CALL grabPage('username', 'pagename')";
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con, $query);
if (!$result) {
printf("Error: %s\n", mysqli_error($con));
exit();
}
$row = array();
while ($row[] = mysqli_fetch_array($result));
mysqli_close($con);
foreach ($row as $htmlOut)
echo $htmlOut['formattedContent'];
謝謝你的幫助。
您要執行的操作的關鍵是雙重的:
對於1,請參見此處的第一個示例:
CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
# Set value of OUT parameter
SELECT VERSION() INTO ver_param;
# Increment value of INOUT parameter
SET incr_param = incr_param + 1;
END;
您會注意到使用OUT和/或INOUT指示輸出,並使用INTO將SELECT結果分配給變量。
對於2,您需要在數據庫服務器上創建一個會話變量,您可以將其分配給結果並查詢以將其取回。 在此處的注釋中查看此示例 。 它非常羅word,所以我不會復制和粘貼,但是您應該能夠適應您的需求。 頁面主體中還有一些替代方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.