功能不会返回值

时间:2013-04-04 01:33:41

标签: php string function return

$html = ' some html here <br>';

function sql($mysqli,$html){

        $stmt = $mysqli->prepare("SELECT * FROM `jobs` WHERE `out` is null");
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($job_id,$vin,$yr,$mk,$mdl,$color,$miles_in,$miles_out,$quoted,$price,$phone,$customer,$bal,$tax,$msg,$in,$out);

        $stmt = $mysqli->prepare("SELECT * FROM jobs a WHERE a.in between ? and ?");
        $stmt->bind_param('ss', $startday, $endday);

        $startday = '2013-01-01';
        $endday = '2013-12-31';

        $stmt->execute();
        $stmt->store_result();

        $stmt->bind_result($job_id,$vin,$yr,$mk,$mdl,$color,$miles_in,$miles_out,$quoted,$price,$phone,$customer,$bal,$tax,$msg,$in,$out);

        while($stmt->fetch()){

以下是两个不同方法的相同行:注释部分可以工作,但是我无法获得将相同的值添加到html字符串的函数,然后在使用php代码时将其返回到脚本。

    $html.= $vin.' - '.$count.' <br> '; // echo $vin.' - '.$count.' <br> ';

$count++;
        }
        return $html;
}

sql($mysqli,$html);
echo $html;

我的输出是'这里有些html'这是因为这就是字符串的定义方式。我希望得到这个函数来添加从mysql查询中提取的值,然后将它们添加到一个字符串中,我可以在所有php的末尾打印出来。 如果我们使用echo而不是$ html连接,则函数的输出是

12345 - <br>
123 - 1 <br>
1236485 - 2 <br>

任何想法?

4 个答案:

答案 0 :(得分:0)

那是因为$html是按值传递的,它的新值是从函数本身返回的。

回调sql()本身的结果将产生正确的价值。

echo sql($mysqli,$html);

或者,您可以先将新值重新分配给$html

$html = sql($mysqli, $html);
echo $html;

答案 1 :(得分:0)

通过引用传递:

function sql($mysqli,&$html){

答案 2 :(得分:0)

尝试使用 echo sql($mysqli, $html);

答案 3 :(得分:0)

也许你的问题是你的$ startday是在你的$ endday之后。该命令与'之间'有关。此外,您可能希望在开始日期和结束日期中包含时间部分,否则如果您的开始日期和结束日期是相同的日期,则您将无法获得当天的结果。像这样:WHERE a.in BETWEEN '2013-04-01 00:00:00' AND '2013-04-01 23:59:59'