【问题标题】:Why does the following SELECT statement not run? [duplicate]为什么以下 SELECT 语句不运行? [复制]
【发布时间】:2020-05-23 18:55:18
【问题描述】:

以下代码旨在从一个表中选择一个值 数据库,使用选定的值更改变量,然后添加 该变量到数据库中的另一个表。然而,我不能 弄清楚为什么它不起作用 - $entry 查询运行,但是 由于某种原因,应用程序无法识别$sql 查询。能 有人帮帮我吗?

$sql = "SELECT calories FROM food WHERE name = $food";
$result = $conn->query($sql);

if ($serving_size == 'Plate'){
    $calories = $amount * $result;
}
if ($serving_size == 'Bowl'){
    $calories = $amount * $result * 2/3; 
}

$entry = $conn->prepare("INSERT INTO data (`Food/Exercise`, `Quantity`, `Calories_Burned_or_Consumed`, `Number_of_Calories`) VALUES (?, ?, ?, ?)");
$entry->bind_param("sssi", $food, $quantity, $consumed, $calories);

if($entry->execute()){
    echo 'Inserted';
} else {
    echo 'Not Inserted';
}

【问题讨论】:

    标签: php html select mysqli procedural


    【解决方案1】:

    $food 是否实际定义过,是否引用过?如果字符串周围没有引号,则此处将其视为列名,并且查询将不匹配任何内容。

    这个查询实际上很容易被 SQL 注入,应该像下面那样使用参数。

    【讨论】:

    • $food 已定义,但我能问一下您在此上下文中引用的意思吗?
    • 喜欢 $food = "'pizza'";双引号内的引号太少了
    • $food 实际上是从运行此脚本的 HTML 表单中提取的 - 我应该如何引用它? $food = "$_POST['food']"; ?
    • @RohanJha 这意味着你必须使用相同的?标记为在 INSERT 查询中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    相关资源
    最近更新 更多