根据ID查询表

时间:2014-01-28 09:24:19

标签: php database

我是PHP的新手,我想知道如何根据ID从数据库中查询表。

我正在创建一个搜索栏,用户可以根据他们的ID(ID是搜索查询)在数据库中搜索员工详细信息。然后,该脚本将根据ID从表中检索结果。

代码:

    <form action="results.php" method="get">
        Employee ID: <input type="text" name="name"><input type="submit">
    </form>
    <?php


// connect to the mysql database server
    $db = new PDO('mysql:host=localhost:3306;dbname=db_test14;charset=utf8', 'root', 'password');

// Prepare the statement (the basic outline of your query)
    $st = $db->prepare('SELECT * from techsols_employee WHERE id = ?');

// Actually execute the query, putting in your id
    $st->execute(array($employee_id));

// Get the actual employee details out of the result
    $employee = $st->fetch();
    ?>

4 个答案:

答案 0 :(得分:1)

  

我是否需要使用某种类型的框架

没有。答案就是“不”。

框架可以使一些事情变得更容易,因为它们已经为您编写了大量代码,因此您无需自己编写代码。

框架可以使一些事情变得更难,因为他们已经为你编写了一堆代码,而且它可能不会像你需要的那样工作。

您可以始终从头开始编写自己的代码。

(这是否是一个好主意取决于具体情况,通常是意见问题)。

答案 1 :(得分:1)

使用内置的PHP函数当然可以实现这一点。尽管您在网上找到的任何教程都说过,但不要使用任何mysql_*函数 - 它们会让您感到不安全和弃用。而是使用mysqliPDO

我给你举个例子。假设您有一个包含以下列的表:

id   employee_name   employee_address

您有一个PHP变量,其中存储了员工ID:$employee_id。使用PDO,您可以获得员工的详细信息:

// connect to the mysql database server
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');

// Prepare the statement (the basic outline of your query)
$st = $db->prepare('SELECT * from employees WHERE id = ?');

// Actually execute the query, putting in your id
$st->execute(array($employee_id));

// Get the actual employee details out of the result
$employee = $st->fetch();

准备好的语句对来自未经过消毒的来源(即来自用户)的任何数据非常有用,因为它们会进行过滤等,以确保您不会冒SQL注入风险。

<强>更新

这样的东西应该工作,但它没有经过测试。基本上在同一个文件中有表单和处理程序(不是最佳实践,但在这个小例子中它很好)。如果表单已提交,请执行搜索并显示一些详细信息。否则显示表格。

<?php

  //if the form's been sent, the "name" index will be in $_POST
  if(isset($_POST['name'])) {
      // connect to the mysql database server
          $db = new PDO('mysql:host=localhost:3306;dbname=db_test14;charset=utf8', 'root', 'password');

      // Prepare the statement (the basic outline of your query)
          $st = $db->prepare('SELECT * from techsols_employee WHERE id = ?');

      // Actually execute the query, putting in your id
          $st->execute(array($employee_id));

      // Get the actual employee details out of the result (as associative array)
          $employee = $st->fetch(PDO::FETCH_ASSOC);

          echo "Employee Details: " . $employee['name'] . ", " . $employee['address'];
  } else { 
    // otherwise, show the form
    // I've changed the action to the set it to the php file that shows the form.
  ?>
  <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
        Employee ID: <input type="text" name="name"><input type="submit">
  </form>
<?php  } ?>

您可以将其分成两个文件:form.html和results.php,然后让PHP文件重定向到form.html如果没有通过post使用以下内容发送而不是表单显示代码那里:

header('Location: form.html');

答案 2 :(得分:0)

最终归结为复杂程度和需求。 框架也是php,但是以这样的方式构建,这将提高开发速度,其中内置的许多日常功能。 既然你提到要成为PHP的新手,我会建议你在进入框架之前首先获得一些常规的PHP体验,因为它们往往会让初学者变得复杂。 就个人而言,我发现codeigniter更容易从新手角度学习。

但是,你的工作可以从基本的PHP完成(基本上我的意思是普通的PHP而不使用框架)。最终你会在php,框架,你正在做的事情的复杂性等方面知道多少。

不幸的是没有正确的答案。我的建议是从你开始使用基本的php开始。如果你有一些如何设法使用框架运行,你实际上可能无法学习框架中使用的实际php功能。

答案 3 :(得分:0)

基本功能就足够了,但这取决于你对“基本”的定义。

这取决于您采用的数据库引擎。如果它是Mongo,那么MongoClient,如果它是MySql,那么MySQLiPDO

请记住规范化您的数据库!