我是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();
?>
答案 0 :(得分:1)
我是否需要使用某种类型的框架
没有。答案就是“不”。
框架可以使一些事情变得更容易,因为它们已经为您编写了大量代码,因此您无需自己编写代码。
框架可以使一些事情变得更难,因为他们已经为你编写了一堆代码,而且它可能不会像你需要的那样工作。
您可以始终从头开始编写自己的代码。
(这是否是一个好主意取决于具体情况,通常是意见问题)。
答案 1 :(得分:1)
使用内置的PHP函数当然可以实现这一点。尽管您在网上找到的任何教程都说过,但不要使用任何mysql_*
函数 - 它们会让您感到不安全和弃用。而是使用mysqli
或PDO
。
我给你举个例子。假设您有一个包含以下列的表:
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)