php - 将 mysql 查询的结果对象获取到函数中的问题

标签 php mysql function

我有一个处理数据库信息的函数。这在一个页面中被多次调用。而且我不想每次都查询数据库。所以我把查询放在外面。如果我这样做,该功能将不起作用。我知道这是可以做到的,因为 SO 中的某个地方也有类似的问题。但这解决了不同的情况。我不知道这里出了什么问题。任何帮助将不胜感激。

如果我将所有这些代码放入一个单独的测试文件(包括 conn 文件和查询)中,它就可以工作。但是在我的主页中,我首先包含functions.php,然后是conn.php,然后是查询,然后是js fadein 事件调用的显示代码,$result 拒绝在函数内工作

编辑:此代码已根据收到的评论进行清理(全局变量替换为传递给函数的变量和合理化的变量名称)

function total($item,$result,$val){
    global $totRate;
    while($getRates=$result->fetch_assoc()){    
    $gotItem= strtolower(preg_replace('/[^(\x20-\x7F)]*/',"",$getRates['item']));
    $gotItem=str_replace(array("_"," ","/"),"",$gotItem);

    if($item==$gotItem){
          $rate= $getRates['rate'];
          $totRate=$val*$rate;
        return $totRate;
        }
    }
}

调用PHP文件的结果

$query = "SELECT * FROM rates ORDER BY item";
$result = $orderdb->query($query)

if (isset($_POST[$itemname]) && !empty($_POST[$itemname])) {
    $val=$_POST[$itemname];
    total($itemname);
    echo $totprate;
} else {
    echo "0";
}

最佳答案

我写这篇文章的假设是您的 SQL 正在运行,但在显示您想要的内容时遇到问题 - 这可能会有所帮助。下面的代码保存查询中的 $result 变量,然后将其作为第二个参数传递到 total 函数中。以前,您从 total 返回 $totprate,但没有将其保存在任何地方 - 现在它保存到 $totprate 变量中。

注意:我在代码中的任何位置都看不到 $orderdb,我假设您的文件中有它并且它正在工作。

function total($item, $result){
    global $val;
    global $pid;
    global $pitem;
    global $prate;
    global $totprate;
    global $gotitem;
    global $getratess;
    // global variable for $result removed so it doesn't overwrite variable passed to function

    while($getratess=$result->fetch_assoc()){
        $gotitem= strtolower(preg_replace('/[^(\x20-\x7F)]*/',"",$getratess['item']));
        $gotitem=str_replace(array("_"," ","/"),"",$gotitem);

        if ($item==$gotitem) {
            $pid=$getratess['id'];
            $pitem= $getratess['item'];
            $prate= $getratess['rate'];
            $totprate=$val*$prate;
            return $totprate;
        }
    }
}

$query = "SELECT * FROM rates ORDER BY item";
$result = $orderdb->query($query);

if (isset($_POST[$itemname]) && !empty($_POST[$itemname])) {
    $val=$_POST[$itemname];
    $totprate = total($val, $result); // pass itemname as first parameter and result array as second parameter and save it to the $totprate variable
    echo $totprate;
} else {
    echo "0";
}

请告诉我这是否有帮助。

关于php - 将 mysql 查询的结果对象获取到函数中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41298112/

相关文章:

PHP/MySQL - 如果使用变量而不是硬编码值,查询将失败

php - 有教义的 Symfony2 用户

mysql - Rails SQL INTERSECT 不起作用

javascript - JavaScript 中的函数如何被视为变量?

r - 应用函数来组合列

php - 检查 PHP 时间(H :i:s) reside between two times(H:i:s)

c# - 并行数据处理混淆了一些信息

mysql - 如何从每个用户那里获取最后一行?

c - 如何在函数中使用链接列表

javascript - Laravel:如何在每次单击图像时在与图像相关的弹出模式上显示动态数据