首页 > 解决方案 > 如何使用 PHP switch 语句在数据库中插入值

问题描述

<?php

$name_user = $_POST['name'];
$city_user = $_POST['the_city'];

$conn = mysqli_connect('127.0.0.1','root','123','people');

mysqli_query($conn, "INSERT INTO people_data (name, the_city) VALUES ('$name_user','$city_user')");

echo "Data has been added:";
echo "<br/>";
echo "Name : $name_user";
echo "<br/>";
echo "The city ";

switch ($city_user)
{
    case "01":
        echo "London";
        break;
    case "02":
        echo "New York";
        break;
    case "03":
        echo "Bali";
        break;
    default:
        echo "Unknown City";
}
?>

我已经运行了代码,但它返回错误:注意:未定义索引:第 7 行 /opt/lampp/htdocs/add.php 中的 the_city

我看到名称已添加,但表 people_data 中的城市仍为空白。我猜错误在switch语句中,但我不知道错误在哪里。

表 people_data 中的预期结果:the_city 包含 01 或 02 或 03 之类的值

我忘了添加html文件,html文件:

<!DOCTYPE HTML>
<HTML>
<body>
<p>
    Add Data
    <br/>
    <form action="add.php" method="post">
        Name : <input type="text" name="name" /><br/>
        The city :
        <select>
            <option value = "01">London</option>
            <option value = "02">New York</option>
            <option value = "03">Bali</option>
        </select>
        <input type="submit" value="Send">
    </form>
</p>
</body>
</HTML>

我运行html文件..

标签: phpmysql

解决方案


问题是你$_POST['the_city']NULL因为你不通过 POST 发送它。您的<select>标签没有参考名称。正确的代码如下所示。

<select name="the_city">
...
</select>

此外,请考虑在 PHP 中使用 isset() 方法。

if (isset($_POST['the_city]))
{
  //your variable has been initialized
}

推荐阅读