我的查询没有为我的第二个索引返回任何内容。它总是向我发送消息Notice: Undefined offset: 1
。我尝试使用for,它是相同的结果,所以我已经读过我的问题是在查询中,有人告诉我让$stmt
为null
以释放我的声明的资源。我不知道出了什么问题。
这些是我的方法。我不知道有人说使用$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
在哪里?
答案 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);
并在循环中使用该变量