列值不会在选择中显示

时间:2017-04-28 01:06:47

标签: php mysql pdo

我需要帮助我的代码,我无法弄清楚它有什么问题。我希望选择根据id显示表中的列。

问题在于此代码:

SELECT * FROM tbl_topic WHERE course_code = :cid

仅当我使用SELECT * FROM tbl_topic时,选择才有效。任何人都可以指出我的代码中有什么问题吗?

<select class="form-control" width="auto" name="tname" id="tname">
    <?php
        try {
            $conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $stmt = $conn->prepare("SELECT * FROM tbl_topic WHERE course_code = :cid");
            $stmt->execute();
            $result = $stmt->fetchAll();
        }
        catch(PDOException $e){
            echo "Error: " . $e->getMessage();
        }
        foreach($result as $topicrow) {
        ?>
            <?php if((isset($_GET['edit'])) && ($editrow['topic_name']==$topicrow['topic_name'])) { ?>
                <option value="<?php echo $topicrow['topic_name']; ?>" selected><?php echo $topicrow['topic_name'];?></option>
            <?php } else { ?>
                <option value="<?php echo $topicrow['topic_name']; ?>"><?php echo $topicrow['topic_name'];?></option>
            <?php } ?>
        <?php
        } // while
        $conn = null;
    ?> 
</select> 

1 个答案:

答案 0 :(得分:1)

你不要绑定参数:cid!您可以使用bindParam来解决此问题:

$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM tbl_topic WHERE course_code = :cid");

//bind paramter :cid here...
$stmt->bindParam(':cid', $cid_value, PDO::PARAM_INT);

$stmt->execute();
$result = $stmt->fetchAll();