2012-04-05 156 views
2

我遇到问题下面的代码给我没有结果。但是,如果我取消注释指定的行,并注释掉它的bind_param行,但是这不是破坏mysqli的目的吗? 我的var_dump给我的字符串(1) “1”bind_param困难

function teams($mysqli, $league_id) { 
    echo 'league id = ' . var_dump($league_id); 
    $sql = "SELECT team_id, team_name FROM teams where league_id='?'"; 
// $sql = "SELECT team_id, team_name FROM teams where league_id='".$league_id."'"; 
    $stmt = $mysqli->prepare($sql); 
    $stmt->bind_param('i', $league_id); 
    $stmt->execute(); 
    $stmt->bind_result($col1, $col2); 
    while($stmt->fetch()) { 
     $results[] = array( 
      'team_id' => $col1, 
      'team_name' => $col2 
     ); 
    } 
    $stmt->close(); 
    var_dump($results); 
    return $results; 
} 
+1

不要引用'?' - 准备好的语句引擎会处理所有这些。它应该是'... league_id =?'。 – 2012-04-05 04:02:16

+0

谢谢修复它 – 2012-04-05 04:04:45

回答

2

功能布尔mysqli_stmt :: bind_param(字符串$类型,混合& $ VAR1 [,混合& $ ...])

接受以下$类型

型号规格字符

字符说明

i。相应变量的类型为整数

d对应的变量的类型是双

及其对应变量的类型是串

B中的对应变量是一个斑点,将在分组中发送

您是将$类型指定为'i'并将值作为字符串用单引号引起来。删除引号并尝试将$ league_id转换为int值。

http://php.net/manual/en/mysqli-stmt.bind-param.php

快乐编码!!