所以我有一个像这样的存储函数,
CREATE FUNCTION `sellerQuality` (score real) RETURNS varchar(10) charset latin1
DETERMINISTIC
BEGIN
DECLARE theValue varchar(10);
IF (score = 0) THEN
set theValue = 'UNKNOWN';
ELSEIF (score <= 10 and score > 7) THEN
SET theValue = 'GOOD';
ELSEIF ( score<=7 and score>0) THEN
SET theValue = 'POOR';
END IF;
return (theValue);
END;
我还有一个名为 PERFORMANCE 的表,如下所示
PERFORMANCE - ID, NAME, AGE, SCORE
我想要的基本上是打印姓名、年龄、分数以及分数排名的输出。
Example: Tony, 29, 90, GOOD ; Rob, 20, 60, POOR
所以我做了这样的事情:
$info = "SELECT * FROM PERFORMANCE P";
$query = mysqli_query($conn, $sql);
$query = mysqli_query($conn, $info) or die(mysqli_error($conn));
$count = mysqli_num_rows($query);
if ($count != 0) {
while ($result = mysqli_fetch_array($query, MYSQLI_ASSOC)) {
$quality = SELECT `sellerQuality` ($result["score"]);
echo $result["name"] . "<br>";
echo $result["age"] . "<br>";
echo $result["score"] . "<br>";
echo $quality. "<br>";
}
} else {
echo "No results found.";
}
mysqli_close($conn);
我认为它看起来已经不错了,但是当我运行该页面时,它给了我:
<小时/>Failed to load resource: the server responded with a status of 500 (Internal Server Error)
更新:
我只是想知道这是否是从 mySQL 到 php 调用函数的正确方法?
$quality = SELECT `sellerQuality`($result["score"]) AS `sellerQuality`;
谢谢。
最佳答案
在您的页面中包含
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
查看所有错误。
我猜错误会出现在这一行:
$quality = SELECT `sellerQuality` ($result["score"]);
但是最好让 php 告诉你错误在哪里。
更新:
如果你想调用MySQL函数,你可以使用
$quality = $query('SELECT sellerQuality(score) AS quality');
然后像这样使用它:
echo "The quality is: ".$quality[0]['quality'];
示例取自 here .
关于php - 调用存储的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37548680/