用于更新SQLite数据库的PHP表单


PHP Form that updates a SQLite database

我需要一些帮助,我试图使用sqlite3数据库创建一个PHP表单。我正在查找值从现有的sqlite3数据库中的表2,其中列id = 340,并显示这些值作为下拉选择。然后,一旦用户选择了值,用户就会提交表单,用php表单中的值将新值更新到table1。我让它在下拉列表中显示名称但当我点击update按钮提交数据时它会更新数组中的值。

例如,表格中有3个水果我选择了梨它就会用"1"而不是"pear"来更新表格

苹果梨桃子

PHP入口页代码:

<html>
<head>
<title></title>
</head>
<div class = "controlbox">
<body style="font-size:12;font-family:verdana">
<form action="post.php" method="post">
<p> 
<h1>  </h1>
<br>
<br>
Slot1 : <select name="slot1">
<option>--Available Options--</option>
<?php
try
{
$db = new PDO("sqlite:DefaultLibrary.db");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);   
}
catch(Exception $e)
{   
echo $e->getMessage();
}
$stmt2 = $db->query ("SELECT * FROM table2 where ID = '340' ");
$rowarray = $stmt2->fetchall(PDO::FETCH_ASSOC);
$slot1 = 0;
foreach($rowarray as $row)
{
 echo "<option value = $slot1 >$row[FirstName] $row[LastName]</option>";
 $slot1++;
}
?>
</select><br>
<p>
<input type="submit" name="update" value="update">
</p>
</form>
</body>
</html>
PHP代码:Post.php
<?php
$slot1 = sqlite_escape_string($_POST['slot1']);
try
{
 $db = new PDO("sqlite:DefaultLibrary.db");
 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
}
catch(Exception $e)
{   
echo $e->getMessage();
}
if (!empty($slot1)) {
try
{   
    $stmt = $db->prepare("UPDATE table1 SET Slot1place = :slot1 WHERE ID = '340'");
    $stmt->bindParam(':slot1', $slot1,PDO::PARAM_STR);
    $stmt->execute();
}
catch(Exception $e)
{
    echo $e->getMessage();
}
    echo "submitted successfully";

    }
    ?>

如果使用这样的预处理语句,则不使用sqlite_escape_string

我认为你应该检查你的html语法(它缺少标签,和)。查看链接:http://www.w3schools.com/html5/tag_option.asp

 echo "<option name = $name >$row[FirstName] $row[LastName]</option>";

其他都是正确的语法