0
$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.ini 文件末尾打印出来的字符串中。如果我们使用 echo 而不是 $html 连接,函数的输出是

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

有任何想法吗?

4

4 回答 4

0

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

呼应sql()自身的结果将产生正确的价值。

echo sql($mysqli,$html);

或者,您可以将新值重新分配给$htmlfirst:

$html = sql($mysqli, $html);
echo $html;
于 2013-04-04T01:38:31.720 回答
0

通过引用传递它:

function sql($mysqli,&$html){
于 2013-04-04T01:39:14.763 回答
0

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

于 2013-04-04T01:40:00.533 回答
0

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

于 2013-04-04T01:47:24.050 回答