PHP如果Else语句无法正常工作

时间:2016-06-16 13:34:31

标签: php html sql

我有一个php if else语句,用于检查查询是否包含字符串。如果它没有输出样式表。如果它包含一个字符串,它将获得用户样式表。然而,它似乎只是输出第一个固定样式表,与用户设置一个。



<?php $user_data_load = $con->query("SELECT theme
FROM users
WHERE id = '".$_SESSION['user']['id']."'");?>
<?php 
if (!isset($user_data_load) or !is_array($user_data_load) or empty($user_data_load)): ?>
<link id="stylesheet" rel="stylesheet" href="css/theme_default.css" type='text/css'>
<?php else: ?>
<?php while($userloaded = $user_data_load->fetch_object()): ?>
<link id='stylesheet' rel='stylesheet' href='<?= $userloaded->theme?>' type='text/css'>
<?php endwhile;?>
<?php endif;?>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

对你的一些注意事项:

if (!isset($user_data_load) or !is_array($user_data_load) or empty($user_data_load)): ?>

!isset($user_data_load)始终为假。 isset检查是否设置了变量,并且由于您自己设置它,它将始终返回true, 中的变量无关紧要。

!is_array($user_data_load) 始终为真,因为$con->query 从不返回数组,因此您将始终使用默认样式表。

试试这样:

<?php

$stmt = $con->prepare("SELECT theme
        FROM users
        WHERE id = ?");
$stmt->bind_param('i', $_SESSION['user']['id']);
$stmt->execute();

if ($data = $stmt->get_result()->fetch_object()) {
    echo '<link id="stylesheet" rel="stylesheet" href="' . $data->theme . '" type="text/css">';
} else {
    echo '<link id="stylesheet" rel="stylesheet" href="css/theme_default.css" type="text/css">';
}

答案 1 :(得分:-1)

每个id都是'stylesheet'。取出id以防止重新绑定。

<link rel='stylesheet' href='<?= $userloaded->theme?>' type='text/css'>