Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-使用表单搜索并返回记录_Php - Fatal编程技术网

PHP-使用表单搜索并返回记录

PHP-使用表单搜索并返回记录,php,Php,我在使用PHP/HTML/SQLITE3。我有一个由多个表组成的数据库,其中一个表叫做Item,它包含itemID、Item的名称等等。因此,我的搜索接受用户输入的itemID,我假设返回的是与该itemID相关的所有内容 我已经测试了我的搜索,它确实返回了itemID,但是,我在弄清楚如何返回与itemID相关的所有内容时遇到了一些困难。下面是我的搜索表单,以及我对包含查询的单独文件所做的操作 <form method="POST" action="action.php">

我在使用PHP/HTML/SQLITE3。我有一个由多个表组成的数据库,其中一个表叫做Item,它包含itemID、Item的名称等等。因此,我的搜索接受用户输入的itemID,我假设返回的是与该itemID相关的所有内容

我已经测试了我的搜索,它确实返回了itemID,但是,我在弄清楚如何返回与itemID相关的所有内容时遇到了一些困难。下面是我的搜索表单,以及我对包含查询的单独文件所做的操作

<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 . "';";