调用存储函数

时间:2016-05-31 14:38:15

标签: php mysql

所以我有一个像这样的存储函数,

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);

我觉得它看起来不错,但是当我运行页面时它给了我:

  

无法加载资源:服务器响应状态为500   (内部服务器错误)

更新

我只是想知道这是否是从mySQL调用函数到php的正确方法?

$quality = SELECT `sellerQuality`($result["score"]) AS `sellerQuality`;

感谢。

1 个答案:

答案 0 :(得分:1)

在您的页面中包含

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

查看所有错误。

我猜错误将在这一行:

$quality = SELECT `sellerQuality` ($result["score"]);

但最好让php告诉你错误的位置。

更新:

如果您想调用MySQLfunction,可以使用

$quality = $query('SELECT sellerQuality(score) AS quality');

后来像这样使用它:

echo "The quality is: ".$quality[0]['quality'];

取自here

的示例