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()){

以下は、2 つの異なるアプローチを使用した同じ行です。コメント部分は機能しますが、同じ値を html 文字列に追加し、php コードの処理が完了したときにそれをスクリプトに返す関数を取得できません。

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

$count++;
        }
        return $html;
}

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

これからの私の出力は「some html here」です。これは、文字列がそのように定義されているためです。この関数を取得して、mysql クエリから取得した値を追加し、それらを文字列に追加して、すべての php の最後に出力できるようにしたいと考えています。$html 連結の代わりに echo を使用した場合の関数の出力は次のとおりです。

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

何か案は?

4

4 に答える 4

0

これ$htmlは、 が値渡しされ、その新しい値が関数自体から返されるためです。

それ自体の結果をエコーアウトsql()すると、正しい値が生成されます。

echo sql($mysqli,$html);

$htmlまたは、新しい値を最初に再割り当てすることもできます。

$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 に答える