PHP-使用表单搜索并返回记录
我在使用PHP/HTML/SQLITE3。我有一个由多个表组成的数据库,其中一个表叫做Item,它包含itemID、Item的名称等等。因此,我的搜索接受用户输入的itemID,我假设返回的是与该itemID相关的所有内容 我已经测试了我的搜索,它确实返回了itemID,但是,我在弄清楚如何返回与itemID相关的所有内容时遇到了一些困难。下面是我的搜索表单,以及我对包含查询的单独文件所做的操作PHP-使用表单搜索并返回记录,php,Php,我在使用PHP/HTML/SQLITE3。我有一个由多个表组成的数据库,其中一个表叫做Item,它包含itemID、Item的名称等等。因此,我的搜索接受用户输入的itemID,我假设返回的是与该itemID相关的所有内容 我已经测试了我的搜索,它确实返回了itemID,但是,我在弄清楚如何返回与itemID相关的所有内容时遇到了一些困难。下面是我的搜索表单,以及我对包含查询的单独文件所做的操作 <form method="POST" action="action.php">
<form method="POST" action="action.php">
<input name="search" type="text" size="20" maxlength="10"/>
<input type="submit" value="Search"/>
</form>
-----
您应该将itemid连接到查询
$query = "SELECT * FROM Item WHERE itemID = '" . $itemID . "';";
为什么?双引号字符串中的变量是内插的看起来您只需要获取$result
resource执行查询后,您没有对查询执行任何操作。抓取。此外,您还可以使用此代码进行SQL注入。啊,所以我应该将$result替换为:$result=$sth->fetch(PDO::fetch_ASSOC);相反谢谢你让我知道克里斯,这是一个小班项目,所以它不会上线。:-)即使在将来,如果您有一个,
,您的查询也会失败。您应该真正使用参数化查询。您需要执行查询,然后在查询后获取结果。使用fetchAll
或循环提取。如果按当前示例所示调用它,则只会得到第一行。还可以使用@
标记用户,否则不会发送通知。@克里斯,你好,克里斯,我尝试过使用fetchall,但它不起作用。你能看看我更新的帖子,告诉我哪里出了问题吗?
<?php
if (isset($_POST["search"])) {
$itemID = $_POST["search"];
try {
$db->beginTransaction();
$query = "SELECT * FROM Item WHERE itemID = '$itemID';";
#$result = $db->query($query);
$result = sqlite_fetch_all($query, SQLITE_ASSOC);
foreach($result as $entry) {
echo 'ItemID: ' . $entry['itemID'] . ' Item Name' . $entry['name'];
}
if (empty($_POST['search'])){
echo "<strong>Esteemed customer did not fill in a
itemID number, please search again. </strong>";
}
$db->commit();
}
<?php
$dbname = "mydatabase.db";
try {
// Establish connection to "mydatabase.db"
$db = new PDO("sqlite:" . $dbname);
// Set error handling so that errors throw an exception
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Enable foreign key constraints on the database
$db->exec("PRAGMA foreign_keys = ON;");
} catch (PDOException $e) {
echo "SQLite connection failed: " . $e->getMessage();
exit();
}
if (isset($_POST["search"])) {
$itemID = $_POST["search"];
try {
$sth = $db->prepare("SELECT * FROM Item WHERE itemID = '$itemID'");
#$query = "SELECT * FROM Item WHERE itemID = '$itemID';";
#$result = $db->query($query);
$sth->execute();
$result = $sth->fetchAll();
print_r($result);
#if (empty($_POST['search'])){
#echo "<strong>Esteemed customer did not fill in a
#itemID number, please search again. </strong>";
}
}
?>
$query = "SELECT * FROM Item WHERE itemID = '" . $itemID . "';";