while循环问题

时间:2011-09-14 15:32:11

标签: php pdo while-loop

我的查询没有为我的第二个索引返回任何内容。它总是向我发送消息Notice: Undefined offset: 1。我尝试使用for,它是相同的结果,所以我已经读过我的问题是在查询中,有人告诉我让$stmtnull以释放我的声明的资源。我不知道出了什么问题。

这些是我的方法。我不知道有人说使用$database->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);

示例:$arrayDirectory[] = {'user1', 'user2'};

它必须回显1 2,但只打印我1

for($i=0;$i<sizeof($arrayDirectory;$i++){ 
    $res[$i] = $obj->obtainID($arrayDirectory[$i]);

    echo $res[$i];
}

这是我的gotID方法:

public function obtainID($user){
        $conexion = $this->objConexion->configuracion();
        $query = "CALL sp_xxx('$user')";
        $stmt = $conexion->prepare($query);
        $stmt->execute();
        $resultado = $stmt->fetchColumn();
        return $resultado;
    }

$stmi = null在哪里?

2 个答案:

答案 0 :(得分:4)

一个人,

 $arrayDirectory[] = {'user1', 'user2'};

是语法错误。 { ... }对PHP中的数组不起作用。也许这只是一个错字,你让PHP与javascsript混淆。

但更大的问题是[]。这告诉PHP将$arrayDirectory视为一个数组(罚款),但将PUSH视为单个值,无论你指定什么。

如果您的代码真的如此:

$arrayDirectory[] = array('user1', 'user2');

这将创建以下结构:

array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(5) "user1"
    [1]=>
    string(5) "user2"
  }
}

请注意,它是一个2级数组。索引为[0]的顶级单元素数组。 0处的元素包含ANOTHER数组,其中包含两个用户名。

你应该改为:

$arrayDirectory = array('user1', 'user2');

$res = array();
foreach($arrayDirectory as $user) {
    $res[] = $obj->obtainID($user);
}

答案 1 :(得分:0)

首先你的功能错了,你忘了为sizeof函数添加结尾')',而且数组没有用{}定义你应该使用array()代替。

最后你在那边做了一个不好的练习; 你不应该在一个循环(sizeof())中调用一个函数,就像每次循环一样,它会启动sizeof()函数,它会占用一些资源,因为sizeof($ object)在使用时不会改变循环,你应该将它保存在变量

$sizeofobject = sizeof($object);

并在循环中使用该变量

相关问题