我正在尝试根据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) {
self::$session->set(self::get_useragent() . "_UA_" . $flag . "_" . $k, $v);
}
self::$session->set(self::get_useragent() . "_UA_" . $flag . "_theme_loaded", 1);
}
当这段代码运行时,make会话,但我得到像
这样的东西$_SESSION['Default_UA_landing_theme_id'] = 1
$_SESSION['Default_UA_landing_0'] = 1
它为它创建的每个会话执行此操作,它使用$ k作为我的查询返回的结果的字段名称的1个会话然后使用$ 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;
}
答案 0 :(得分:2)
在不了解更多关于fetch_row_assoc
的内容的情况下,我无法确定,但看起来你应该在关联数组中有数字和非数字索引。您应该查看self::$db
背后的任何类,看看是否有其他方法可以解决这个问题。
如果您正在使用的库不会为您提供没有数字索引的关联数组,那么您可以使用is_numeric
的测试来解决上述问题。
foreach ($r as $k => $v) {
if( is_numeric( $k ) )
self::$session->set(
self::get_useragent() . "_UA_" . $flag . "_" . $k,
$v);
}
答案 1 :(得分:1)
您正在使用FETCH_BOTH
(创建包含数字和关联索引的数组),然后在foreach
中循环。为什么在指定FETCH_BOTH
后立即使用FETCH_ASSOC
?