[英]php and mysql, best practices
我今天開始使用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.'" />';
}
幾個問題,
謝謝!
1)不,雖然這是最簡單的開始方式。 在您對基礎知識感到滿意之后,您應該花一些時間考慮應用程序結構的不同方法。 最重要的規則是分開關注點。 不要將數據庫代碼與業務邏輯代碼與表示代碼混合在一起。 但就像我說的那樣,這不是你第一天應該擔心的事情。 現在只學習基礎知識。
2)實際上沒有其他辦法。 對於Web應用程序,來自瀏覽器的每個請求都類似於單獨的應用程序運行。 有可能使用所謂的持久性數據庫連接,但就像之前的那樣,這是您第一天不應該處理的事情,因為它們需要特定的Web服務器配置。 暫時只使用普通連接。
3)這是非常明智的想法。 您還可以將圖像路徑定義為PHP常量,以便在需要更改時,您只需更改此常量。
4)sAc在他的回答中說的非常重要。 閱讀有關SQL注入以及如何防止它們的信息。
已經提到了SQL注入和預處理語句。 除此之外還有:
else echo $mysqli->error;
改為:
else trigger_error($mysqli->error,E_USER_ERROR);
你為什么問? 因為訪問者應該不知道您的數據庫,並且無法修復錯誤,所以他們應該不會看到它。 這樣,您可以安全地使用display_errors
進行開發,並在實時站點上關閉display_errors
,並在錯誤日志中記錄log_errors
。
看起來你很好地處理了你想做的事情。 我不知道你有多少開發背景,但是開始學習像CakePHP,Fuse甚至Zend Framework這樣的MV中的MVC是個好主意(bleh !!!)。 通過預先定義所有基本的數據庫接口,模板處理,會話處理,讓您省去更高級別的問題,比如午餐時間,我會節省您在更強大的應用程序上的時間! :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.