我需要帮助我的代码,我无法弄清楚它有什么问题。我希望选择根据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>
答案 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();