在foreach循环中复制PHP会话
我正在尝试根据返回的sql查询数据创建会话 这是我的代码:在foreach循环中复制PHP会话,php,session,Php,Session,我正在尝试根据返回的sql查询数据创建会话 这是我的代码: $r = self::$db->fetch_row_assoc($sql); $theme_dir = THEME_PATH . self::get_useragent() . "_UA_" . $flag . "_" . $r['theme_folder_name']; if (self::$config['set_session'] == 1) { foreach ($r as $k => $v) {
$r = self::$db->fetch_row_assoc($sql);
$theme_dir = THEME_PATH . self::get_useragent() . "_UA_" . $flag . "_" . $r['theme_folder_name'];
if (self::$config['set_session'] == 1) {
foreach ($r as $k => $v) {
self::$session->set(self::get_useragent() . "_UA_" . $flag . "_" . $k, $v);
}
self::$session->set(self::get_useragent() . "_UA_" . $flag . "_theme_loaded", 1);
}
当运行此代码时,会生成我的会话,但我得到如下结果
$_SESSION['Default_UA_landing_theme_id'] = 1
$_SESSION['Default_UA_landing_0'] = 1
它对创建的每个会话都执行此操作,它创建一个会话,其中$k是我的查询返回的结果的字段名,然后创建另一个会话,其中$k是$r数组的索引
我怎么能让它每k美元做一次会话呢
这是我用来查询数据的方法
public function fetch_row_assoc($statement)
{
self::$PDO->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try{
$stmt = self::$PDO->query($statement);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$result = $stmt->fetch(PDO::FETCH_BOTH); //FETCH_BOTH
return $result;
}catch(PDOException $e){
echo $e->getMessage();
}
return false;
}
如果不知道更多关于
获取行协会的情况,我不能确定,但看起来在应该是关联数组的数组中有数字和非数字索引。您可能应该查看self::$db
后面的任何类,看看是否有其他方法可以解决这个问题
如果您正在使用的库不能提供没有数字索引的关联数组,那么您可以通过测试是否为数字
来解决上述问题
foreach ($r as $k => $v) {
if( is_numeric( $k ) )
self::$session->set(
self::get_useragent() . "_UA_" . $flag . "_" . $k,
$v);
}
如果不知道更多关于获取行协会的情况,我不能确定,但看起来在应该是关联数组的数组中有数字和非数字索引。您可能应该查看self::$db
后面的任何类,看看是否有其他方法可以解决这个问题
如果您正在使用的库不能提供没有数字索引的关联数组,那么您可以通过测试是否为数字
来解决上述问题
foreach ($r as $k => $v) {
if( is_numeric( $k ) )
self::$session->set(
self::get_useragent() . "_UA_" . $flag . "_" . $k,
$v);
}
您正在使用FETCH\u BOTH
(创建一个包含数字和关联索引的数组),然后在foreach
中循环。为什么在指定FETCH\u ASSOC
后立即使用FETCH\u BOTH
?您正在使用FETCH\u BOTH
(创建一个包含数字和关联索引的数组),然后在foreach
中循环。在指定FETCH\u ASSOC
后,为什么要立即使用FETCH\u BOTH
?的行为似乎是,每列取2次,包括列顺序和列名@s2xi调查内部self::$db
并查看是否可以更改(或将$fetch\u style=PDO::fetch\u ASSOC
作为参数传递)。(编辑:将mysql更改为PDO)似乎的行为是,使用列顺序和列名将每列提取2次。@s2xi在self::$db
内部进行调查,看看是否可以更改(或将$fetch\u style=PDO::fetch\u ASSOC
作为参数传递)。(编辑:将mysql更改为PDO)嗯,我在研究PDO如何处理查询时使用了该方法。你建议我将其修改为什么?没关系,我只是将两者都设置为ASSOC,我得到了我一直在寻找的结果。我在研究PDO如何处理查询时使用了该方法。你建议我将其修改为什么?没关系,我只是将两者都设置为ASSOC,我得到了我正在查看的结果寻找