PDO表单添加到数据库:添加了数组编号而不是它所代表的文本

时间:2015-07-18 14:29:53

标签: php html mysql pdo

我是PHP和PDO的新手。当单击提交按钮时,我设法让PDO将表单数据添加到mysql数据库。 我遇到的问题是下拉框,它选择并显示来自另一个数据库表的数据。当这被添加到数据库而不是显示所选的选项' Top,Hat或Coat'它改为显示' 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
    ));
}
?>

1 个答案:

答案 0 :(得分:1)

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