mysqli bind_result然后使用fetch()获取结果 - 不在函数内部工作

时间:2016-10-04 23:53:11

标签: php function mysqli fetch

第一个脚本正常工作并返回包含数据的多行。但是当我尝试在第二个脚本中显示的函数中使用此代码时,我无法输出数据,但它返回行数,我尝试使用返回数组(),如图所示here但仍然是无法理解工作。非常感谢。

def function_1(self, cr, uid, ids, num1, num2, num3, context=None):
    res = {}
    if num1:
        res['sum'] = num1 + num2
        return {'value': res}

    elif num2:
        res['sum2'] = num2 + num3
        return {'value': res}

    else:
        pass # return some default value here

第一个代码的结果

<?php
// 1st code
$stmt = $mysqli -> prepare (" SELECT Name, City FROM user_db WHERE id = ? " ) ;
$stmt -> bind_param ('s', $id ) ;
$stmt -> execute () ;
$stmt -> store_result () ;
$stmt -> bind_result ( $name1, $city1  ) ;
while ( $stmt -> fetch () ) { echo $name1 .'-'. $city1  .'<br>' ; }

第二个代码 - 在函数中使用第一个代码

name1-city1
name2-city2
name3-city3

第二代码的结果

function test ( $mysqli , $id ) {
    $stmt = $mysqli -> prepare (" SELECT Name, City FROM user_db WHERE id = ? " ) ;
    $stmt -> bind_param ('s', $id ) ;
    $stmt -> execute () ;
    $stmt -> store_result () ;
    $stmt -> bind_result ( $name, $city  ) ;
    return $stmt;
}

$stmt = test ( $mysqli , $id );

while ( $data = $stmt -> fetch () ) { 
    echo  $name .'-'. $city  .'<br>' ; 
}

2 个答案:

答案 0 :(得分:0)

调用函数后,

bind_result给了我与第一个脚本相同的结果,它是我正在寻找的解决方案,但我仍然不明白为什么上面的第二个脚本没有按预期工作

通话功能

$ stmt = test($ mysqli,$ id);

然后将bind_result绑定到语句

$ stmt - &gt; bind_result($ name,$ city);

答案 1 :(得分:0)

为了善意,请使用PDO

function test ( $db , $id ) {
    $stmt = $db->prepare ("SELECT Name, City FROM user_db WHERE id = ?") ;
    $stmt->execute([$id]);
    return $stmt->fetchAll();
}

$data = test ($pdo, $id);

foreach ($data as $row) { 
    echo  $row['Name'] .'-'. $row['City']  .'<br>' ; 
}