我有以下代码,抱歉长度,但它可以节省解释我需要的大部分内容...... 没有返回pages()函数中的$ result。当我呼唤它时,我得到的是未定义的变量。为什么? 我需要的是将$ start和$ display变量传递给mysql查询。
<?php
if(isset($_POST['get_records_submit'])) {
$pages; $start; $display; $result;
function pages($stmt) {
//set how many records per page
$display = 10;
//determine how many pages there are
if(isset($_GET['p']) && is_numeric($_GET['p'])) { //already determined
$pages = $_GET['p'];
}
else {
$records = mysqli_stmt_num_rows($stmt);
}
//calculate the number of pages
if($records > $display) { //if there are more records than will fit on one page
$pages = ceil($records/$display); //ceil() rounds up to the nearest integer
}
else { //records will fit on one page
$pages = 1;
}
//determine which row to start returning results from
if(isset($_GET['s']) && is_numeric($_GET['S'])) { //already determined
$start = $_GET['s'];
}
else {
$start = 0;
}
$result = array(0=>$display, 1=>$pages , 2=>$start);
return $result;
}
$searchby = $_POST['search_by'];
$searchfor = $_POST['search_for'];
$contact = 1;
$i = 0;
//set the initial query
$query = "SELECT client_id, title_desc, firstname, surname, house, street, town, city, county, postcode as count FROM address LEFT JOIN client USING (client_id) LEFT JOIN client_title USING (title_id) LEFT JOIN address_street USING (address_id) LEFT JOIN address_town USING (address_id) LEFT JOIN address_city USING (address_id) LEFT JOIN address_county USING (address_id) WHERE is_contact = ?";
//depending on search terms, amend the query
if($searchby == 'all') {
$query .= " ORDER BY surname ASC, firstname ASC";
$stmt = mysqli_prepare($dbc, $query);
mysqli_stmt_bind_param($stmt, 'i', $contact);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
pages($stmt);
var_dump ($result);
foreach ($result as $var) { echo $var.' ';}
mysqli_stmt_close($stmt);
$query .= " ORDER BY surname ASC, firstname ASC LIMIT ?, ?";
$stmt = mysqli_prepare($dbc, $query);
mysqli_stmt_bind_param($stmt, 'iii', $contact, $start, $display);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $client_id, $stitle, $sfname, $ssname, $shouse,$sstreet, $stown, $scity, $scounty, $spostcode);
if($searchfor != '') {
echo "<p>You searched under <span class=\"bold\">\"All\"</span>, therefore your search term <span class=\"bold\">\"$searchfor\"</span> has not been included.</p>";
}
}
}
答案 0 :(得分:5)
在这一行:
pages($stmt);
函数pages()
返回数组,但此结果未设置为变量。尝试使用:
$result = pages($stmt);
然后通过变量$result
访问数组。
您声明的$result
变量最高?它未被设置的原因是因为函数pages()
无法访问它,因为它不在函数范围内。
正如Lyth所指出的,如果你不希望函数返回任何东西,你可以按如下方式修改你的函数:
function pages($stmt) {
global $result;
// ...
// The rest of your function
// ...
$result = array(0=>$display, 1=>$pages , 2=>$start);
// Remove the 'return $result' line
}
答案 1 :(得分:0)
我不知道你为什么要写$ pages; $启动; $显示; $结果;?如果你想获得数组的值,试着使用这个......
$result = array($display, $pages , $start);
return $result;
您可以使用
检查数组print_r ($result);