php - PDO表单添加到数据库: Array number is added rather than the text it represents

标签 php html mysql pdo

我是 PHP 和 PDO 新手。我已经设法让 PDO 在单击提交按钮时将表单数据添加到 mysql 数据库。 我遇到的问题是下拉框,它选择并显示另一个数据库表中的数据。当将其添加到数据库而不是显示所选选项“上衣、帽子或外套”时,它会显示“0、1、2”。

HTML 代码(带有一些 PHP):

<!DOCTYPE html>
<html>
<head>
</head>

<body>
    <div>
        <?PHP include_once("addProduct.php");?>
        <form method="post" action="">
            Product Name: <input type="text" id="productName" name="productName" /><br />

            Catagory: 
            <?php
                mysql_connect("localhost", "root","") or die(mysql_error());
                mysql_select_db("web_scripting") or die(mysql_error());
                $query = "SELECT id,category FROM catagory_table";
                $result = mysql_query($query) or die(mysql_error()."[".$query."]");
            ?>                                  
            <select type="text" id="category" name="category">
            <?php 
                while ($row = mysql_fetch_array($result))
                {
                    echo "<option value='".$row['id']."'>'".$row['category']."'</option>";
                }
            ?>  </select><br />

            Stock: <input type="number" id="stock" name="stock" /><br />

            Cost: <input type="number" id="cost" name="cost" /><br />

            <input type="submit" value="add"> <br />

            <?PHP   
                $query = "SELECT * FROM product_table";
                $result = $odb->query($query);
                if($result->rowCount() > 0) {
                    foreach($result as $item) {
                    echo($item['name'] . " , " . $item['category'] . " , " . $item['stock'] . " , " . $item['cost'] . "<br />");
                    }
                }
            ?>
        </form>
    </div>

</body>

PHP 代码:

$host = "localhost";
$user = "root";
$db = "web_scripting";
$pass = "";

$odb = new PDO("mysql:host=" . $host . ";dbname=" . $db, $user, $pass);

if(isset($_POST['productName'])) {
    $productName = $_POST['productName'];
    $category = $_POST['category'];
    $stock = $_POST['stock'];
    $cost = $_POST['cost'];
    $q = "INSERT INTO product_table(name, category, stock, cost) VALUES(:name, :category, :stock, :cost);";
    $query = $odb->prepare($q);
    $results = $query->execute(array(
        ":name" => $productName,
        ":category" => $category,
        ":stock" => $stock,
        ":cost" => $cost
    ));
}
?>

最佳答案

我想说这是正确的,您的数据库正在保存您想要的类别的 id。可以通过在类别表中查询该 id 来找到该类别的名称。这就是关系数据库设计。考虑一下您是否确实将类别名称存储在产品表中。随后,您决定更改类别名称,您将需要更新所有产品记录,而不仅仅是一个类别记录。

关于php - PDO表单添加到数据库: Array number is added rather than the text it represents,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31492173/

相关文章:

php - 无法将默认用户角色分配给新用户

php - 多表选择查询错误

php - mysql 导入到 varchar 字段包含我没有看到的内容

php - 如何使用 PHP 取消对 Windows Auth 用户的身份验证

php - 从 mysql 字段获取总计

html - 如何从 <img src =""> 标签获取图像?

PHP:具有父/子关系的动态 SEO 网址

php - 如何使用YouTube API上传录音 Assets ?

javascript - 即使 z-index 最大,Mousemove 事件也不会在 Canvas 上触发

html - 页面中莫名其妙的空间差距