php框架開發(fā)4(DAO層)
Jun 13, 2016 pm 01:18 PM
php框架開發(fā)四(DAO層)
網(wǎng)站開發(fā)不可避免地要對一些數(shù)據(jù)進行儲存,但是存儲這些數(shù)據(jù)各種語言的方式基本上都是:先打開連接,然后執(zhí)行SQL語句,獲取結(jié)結(jié)果,關(guān)閉連接。
那么PHP在操作數(shù)據(jù)庫的時候有哪些方法呢?
<?php $connect = mysql_connect($host,$user,$pass); mysql_select_db($dbname); $result = mysql_query($query); while($row = (mysql_fetch_array($result))){ print_r($row); }
用以上操作可以來操作數(shù)據(jù)庫。對于在HTML嵌入PHP腳本的行業(yè),這已經(jīng)足夠了,但是當(dāng)我們要進行大量的增刪改查時,必須要把多次的上面的腳本進行復(fù)用。那么就會出現(xiàn)這樣的模式
DAO層http://blog.csdn.net/tomyjohn/article/details/7675770
我們暫且把上面的模式就做DAO層,但是真正的意義在于我們這個MVC框架,恰好可以用這個方式來操作。下面我們新建一個controller
<?php class index{ public function demo(){ $art = new article(); $art->title = '標題'; $art->content = '內(nèi)容'; $art->save(); echo $art->id; view::show('index.htm'); } }
在數(shù)據(jù)庫里新建一張表,表名為“si_article”,
DROP TABLE IF EXISTS `si_article`; CREATE TABLE `si_article` ( `id` int(8) NOT NULL AUTO_INCREMENT, `title` varchar(255) DEFAULT NULL, `content` text, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=gbk;
在“modules”文件夾內(nèi)新建一個“article.php”
<?php class article extends dao{ protected $table = __CLASS__; }
當(dāng)我們執(zhí)行上面的controller時,便可以看到剛插入的數(shù)據(jù)的ID。
這樣我們可以很簡單地實現(xiàn)一個在線留言的功能。
這個框架講到現(xiàn)在,差不多所有的MVC都已經(jīng)描述了一遍,你可以用它來開發(fā),當(dāng)然它是一個完整的但并不豐富的MVC。我們要考慮的事情還有很多。譬如分頁,緩存,安全等等。但這并不影響我對這個輪子的熱愛。

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

std::chrono is used in C to process time, including obtaining the current time, measuring execution time, operation time point and duration, and formatting analysis time. 1. Use std::chrono::system_clock::now() to obtain the current time, which can be converted into a readable string, but the system clock may not be monotonous; 2. Use std::chrono::steady_clock to measure the execution time to ensure monotony, and convert it into milliseconds, seconds and other units through duration_cast; 3. Time point (time_point) and duration (duration) can be interoperable, but attention should be paid to unit compatibility and clock epoch (epoch)

ToaccessenvironmentvariablesinPHP,usegetenv()orthe$_ENVsuperglobal.1.getenv('VAR_NAME')retrievesaspecificvariable.2.$_ENV['VAR_NAME']accessesvariablesifvariables_orderinphp.iniincludes"E".SetvariablesviaCLIwithVAR=valuephpscript.php,inApach

CTE is a temporary result set in MySQL used to simplify complex queries. It can be referenced multiple times in the current query, improving code readability and maintenance. For example, when looking for the latest orders for each user in the orders table, you can first obtain the latest order date for each user through the CTE, and then associate it with the original table to obtain the complete record. Compared with subqueries, the CTE structure is clearer and the logic is easier to debug. Usage tips include explicit alias, concatenating multiple CTEs, and processing tree data with recursive CTEs. Mastering CTE can make SQL more elegant and efficient.

PHPhasthreecommentstyles://,#forsingle-lineand/.../formulti-line.Usecommentstoexplainwhycodeexists,notwhatitdoes.MarkTODO/FIXMEitemsanddisablecodetemporarilyduringdebugging.Avoidover-commentingsimplelogic.Writeconcise,grammaticallycorrectcommentsandu

There are three key ways to avoid the "undefinedindex" error: First, use isset() to check whether the array key exists and ensure that the value is not null, which is suitable for most common scenarios; second, use array_key_exists() to only determine whether the key exists, which is suitable for situations where the key does not exist and the value is null; finally, use the empty merge operator?? (PHP7) to concisely set the default value, which is recommended for modern PHP projects, and pay attention to the spelling of form field names, use extract() carefully, and check the array is not empty before traversing to further avoid risks.

When using PHP preprocessing statements to execute queries with IN clauses, 1. Dynamically generate placeholders according to the length of the array; 2. When using PDO, you can directly pass in the array, and use array_values to ensure continuous indexes; 3. When using mysqli, you need to construct type strings and bind parameters, pay attention to the way of expanding the array and version compatibility; 4. Avoid splicing SQL, processing empty arrays, and ensuring data types match. The specific method is: first use implode and array_fill to generate placeholders, and then bind parameters according to the extended characteristics to safely execute IN queries.

WhensettingupMySQLtables,choosingtherightdatatypesiscrucialforefficiencyandscalability.1)Understandthedataeachcolumnwillstore—numbers,text,dates,orflags—andchooseaccordingly.2)UseCHARforfixed-lengthdatalikecountrycodesandVARCHARforvariable-lengthdata

Reasons and solutions for the header function jump failure: 1. There is output before the header, and all pre-outputs need to be checked and removed or ob_start() buffer is used; 2. The failure to add exit causes subsequent code interference, and exit or die should be added immediately after the jump; 3. The path error should be used to ensure correctness by using absolute paths or dynamic splicing; 4. Server configuration or cache interference can be tried to clear the cache or replace the environment test.
