2014-09-22 79 views
0

我直接在我的標記呼應的出下面的標記爲每個結果傳遞PHP參數傳遞給準備好的語句函數調用不工作

'<div class="checkboxwrapper"><input type="checkbox" name="checkbox[]" value="' . $userid . '">' . $name . '</div>' 

具有所有這些額外的代碼在我的標記,似乎有一個SELECT準備好的聲明有點笨重。是否有可能以某種方式將這個準備好的語句保存在一個單獨的文件中,將其包含在我的標記的頂部,然後根據我想要的結果調用函數傳遞一個單獨的參數?

getresult.php

<?php 
function getResults($output) { 
    global $db; 
    $stmt = $db->prepare("SELECT UserID, Name, Country FROM Dummy"); 
    $stmt->execute(); 
    $stmt->store_result(); 
    $rows = $stmt->num_rows(); 
    $stmt->bind_result($userid, $name, $country); 
    if($rows) { 
     while($stmt->fetch()) { 
     echo $output; 
     } 
    } else { 
     echo 'No Results found'; 
    } 
    $stmt->close(); 
} 
?> 

indexp.php

<?php 
    getResults('<div class="checkboxwrapper"><input type="checkbox" name="checkbox[]" value="' . $userid . '">' . $name . '</div>'); 
?> 

我似乎無法得到上面的代碼工作,我懷疑它是做結果綁定? 理想情況下,id喜歡能夠從不同的地方調用函數,並能夠通過傳遞參數指定我想要返回的結果。這可能嗎??

+0

回聲 '沒有找到結果'; 此部分是否受到影響? – 2014-09-22 07:53:23

回答

0

$ userid,$ name和$ country沒有在函數範圍中定義。

你也許可以做這樣的事情:

<?php 
function getResults($output) { 
    global $db; 
    $userid = ''; 
    $name = ''; 
    $country = ''; 

    $stmt = $db->prepare("SELECT UserID, Name, Country FROM Dummy"); 
    $stmt->execute(); 
    $stmt->store_result(); 
    $rows = $stmt->num_rows(); 
    $stmt->bind_result($userid, $name, $country); 

    if($rows) { 
     while($stmt->fetch()) { 
     echo sprintf($output, $userid, $name, $country); 
     } 
    } else { 
     echo 'No Results found'; 
    } 
    $stmt->close(); 
} 
?> 

,改變函數調用來:

<?php 
getResults('<div class="checkboxwrapper"><input type="checkbox" name="checkbox[]" value="%s">%s</div>'); 
?> 
0

當您在index.php中調用getResults()時,未定義$ name和$ userid。

您必須使用模板或多個字符串。

將帶變量的字符串作爲參數傳遞給函數將無法工作。