php - 错误 : Unknown column 'abc' in 'where clause'

标签 php mysql mysqli

<分区>

我有 2 个下拉菜单。当我点击第一个时,第二个应该显示与第一个选择相关的值。但是,当我选择第一个时,我明白了。

Error: Unknown column 'abc' in 'where clause'

下面是我的代码。有人能告诉我我做错了什么吗?提前谢谢你。

<?php 
include ('db_connect1.php'); 
$query_parent = mysqli_query($conn, "SELECT * FROM field") or die("Query failed: ".mysqli_error());
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Dependent DropDown List</title>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {

$("#parent_cat").change(function() {
    $(this).after('<div id="loader"><img src="img/loading.gif" alt="loading subcategory" /></div>');
    $.get('loadsubcat.php?parent_cat=' + $(this).val(), function(data) {
        $("#sub_cat").html(data);
        $('#loader').slideUp(200, function() {
            $(this).remove();
        });
    }); 
});

 });
</script>
</head>

<body>
<form method="get">
<label for="category">Parent Category</label>
<select name="parent_cat" id="parent_cat">
    <?php while($row = mysqli_fetch_array($query_parent)): ?>
    <option value="<?php echo $row['field_name']; ?>"><?php echo    $row['field_name']; ?></option>
    <?php endwhile; ?>
</select>
<br/><br/>

<label>Sub Category</label>
<select name="sub_cat" id="sub_cat"></select>
</form>
</body>
</html>

//loadsubcat.php
<?php 
include ('db_connect1.php');

$parent_cat = $_GET['parent_cat'];
$test="SELECT * FROM courses WHERE field_id = {$parent_cat}";
$query = mysqli_query($conn,$test) or die ("Error: ".mysqli_error($conn));
while($row = mysqli_fetch_array($query)) {
echo "<option value='$row[course_id]'>$row[course_name]</option>";
}
?>

最佳答案

字符串值必须在引号内。确保 field_idvarcare。最好将参数绑定(bind)与准备好的语句一起使用。

$parent_cat = $_GET['parent_cat'];
$stmt = $conn->prepare("SELECT * FROM courses WHERE field_id = ?");
$stmt->bind_param('s', $parent_cat);
$stmt->execute();

$stmt->get_result(); //store_result()
$str = "";
while ($row = $result->fetch_assoc()) {
    $str .= "<option value='".$row['course_id']."'>'".$row['course_name']."'</option>";
}
echo $str;

您的代码可以进行 sql 注入(inject)。

阅读How can I prevent SQL injection in PHP?为了防止它

关于php - 错误 : Unknown column 'abc' in 'where clause' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37459295/

相关文章:

php - MySQLi 准备好的语句 : Short versions in one line

java - 将参数从 Android 获取到 PHP 文件以进行 SQL 查询时遇到问题

PHP 检测是否设置了任何 URL 变量

javascript - 使用 jquery 和 php 的 ajax

PHP mysql_real_escape_string() : Access denied for user 'www-data' @'localhost'

mysql - 从查询中排除分配的文章

php - Nginx 下载 php 而不是运行它

php - Facebook Graph API 停止识别 publish_action 范围

mysql - 正则表达式能解决这个问题吗?我们如何获取表达式中使用的参数数组?

php - 将 MySQL 查询转换为可能为空值的准备语句