我今天开始使用php和mysql。基本上,我所拥有的是一个空页面,其中包含我在数据库中查找id时填写的内容。所以在我的主页上我有一个看起来像这样的网址:
<a href="content/display.php?id=id1">
然后在我的display.php中我有这个:
<?php
include '../includes/header.php';
$id = $_GET['id'];
$mysqli = new mysqli('localhost','username','password','dbname');
if($result = $mysqli->query("SELECT * FROM portfolio WHERE id='".$id."'"))
{
while($row = $result->fetch_object())
{
$head = $row->head;
$img1 = $row->img1;
$img2 = $row->img2;
$img_url = $row->imgurl;
$img_thumb = $row->imgthumb;
$vid = $row->vid;
$swf = $row->swf;
$url = $row->url;
$url_text = $row->urltext;
$text = $row->text;
}
}
else echo $mysqli->error;
?>
这是一个稀疏表,因为并非所有这些字段都有信息(许多字段可能为空)。基本上它们包含文件名,然后在html中我有如下代码:
if(isset($img1))
{
echo '<img src="images/'.$img1.'" />';
}
有几个问题,
谢谢!
答案 0 :(得分:6)
答案 1 :(得分:6)
1)不,虽然这是最简单的开始方式。在您对基础知识感到满意之后,您应该花一些时间考虑应用程序结构的不同方法。最重要的规则是分开关注点。不要将数据库代码与业务逻辑代码与表示代码混合在一起。但就像我说的那样,这不是你第一天应该担心的事情。现在只学习基础知识。
2)实际上没有其他办法。对于Web应用程序,来自浏览器的每个请求都类似于单独的应用程序运行。有可能使用所谓的持久性数据库连接,但就像之前的那样,这是您第一天不应该处理的事情,因为它们需要特定的Web服务器配置。暂时只使用普通连接。
3)这是非常明智的想法。您还可以将图像路径定义为PHP常量,以便在需要更改时,只更改此常量。
4)sAc在他的回答中说的非常重要。阅读有关SQL注入以及如何防止它们的信息。答案 2 :(得分:1)
SQL注入&amp;已经提到了准备好的陈述。除此之外还有:
else echo $mysqli->error;
将其更改为:
else trigger_error($mysqli->error,E_USER_ERROR);
你为什么这么问?因为访问者应该不知道您的数据库,并且无法修复错误,所以他们应该不会看到它。通过这种方式,您可以安全地使用display_errors
开启,并且在实际网站display_errors
关闭,并在错误日志中log_errors
。
答案 3 :(得分:1)
看起来你可以很好地处理你想做的事情。我不知道你有多少开发背景,但是开始学习像CakePHP,Fuse甚至Zend Framework这样的MV中的MVC是个好主意(bleh !!!)。通过预先定义所有基本的数据库接口,模板处理,会话处理,让您省去更高级别的问题,比如午餐时间,我会节省您在更强大的应用程序上的时间! :)