PHP 數據庫MySQL的使用

前言:
最近剛接觸php,記錄一下學習的過程。其中遇到過的坑希望對你們有幫助。

文章目錄

1、有關數據庫的簡介
2、安裝的工具與環境
3、創建數據庫的方式
4、文章發布系統
5、遇到的小坑

1、有關數據庫的簡介:

a、先附上一張有關數據庫整理的知識:


MySQL.jpg

b、介紹一下數據庫中:DATABASE TABLE COLUMN ROW 的關系

關系表p1.jpg

例如:DATABASE可以包含有多個TABLE,TABLE中包含COLUMN、ROW。就好比一個Number中有多個表,表里有行和列。如圖關系表p2。

![關系表p2.png](http://upload-images.jianshu.io/upload_images/188188-6ea3b489994974c9.png?
imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2、安裝的工具與環境:

1、Mac
2、MAMP (Apache、MySQL、PHP),安裝請自行搜索
3、PhpStorm.

3、創建數據庫的方式

一、使用PhpStorm工具創建數據庫

1、MAMP 開啟服務
2、在PhpStorm 中view --- Tool Windows --- Database

p2.png

3、選擇 " + " 添加MySQL

p3.png

4、MySQL 配置

p4

Name: 可以隨意起
Host Port User Passoword 要根據自己實際情況設置,點擊MAMP中的WebStart可以查看具體的設置。

p4.png

5、最后點擊Test Connection測試連接是否成功

p5-1.png

我在使用的時候遇到了一個錯誤:java.net.ConnectException: Connection refused
發現是MAMP的設置有問題:檢查一下 是否有勾選了 Allow network access to MySQL

p5-2.png

6、設置完成后,開始創建數據庫了。

1、創建數據庫
2、創建表(只是創建表,表將會有什么內容,此時并沒有內容)
3、更新/插入。內容是從這步創建的
4、才可以使用....

開始使用SQL語句進行操作,具體SQL語句解釋可以在參考

CREATE DATABASE userinfo;
USE userinfo;
# #創建數據庫中的表
CREATE TABLE myInfo(sid VARCHAR(12),sname VARCHAR(20), sage INT);
# # 添加語句
INSERT myInfo (sid, sname, sage) VALUES ('123456','hing',18);
#
# # 查詢語句
SELECT * FROM myInfo;
# # 更新語句
UPDATE myInfo SET sage = 28 WHERE sname = 'hing';
# #刪除語句(刪除一個名為samoy的學生)
# DELETE FROM myInfo WHERE sid = '123456';
# DROP DATABASE userinfo;CREATE TABLE myInfo(sid VARCHAR(12),sname VARCHAR(20), sage INT)
````````

可以在執行的SQL語句后面  command + enter鍵,選在單條執行。

![p6-1.png](http://upload-images.jianshu.io/upload_images/188188-343f3902e8540064.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

執行完語句之后,可以直接在phpMyAdmin(在MAMP--webStart的頁面中)中查看

![p6-2.png](http://upload-images.jianshu.io/upload_images/188188-95743b3365cb3d9a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

######這里順便介紹phpMyAdmin 管理數據庫 (導入導出操作)

導入 ,選擇已經處在的數據庫,如果導入的數據表,則要在數據庫下添加才可以。(在我的demo中有導出了“文章發布系統”的數據庫([info.sql.zip](https://github.com/A-Hing/PutArticle/blob/master/info.sql.zip)),有興趣可以試試)
![導入p1.png](http://upload-images.jianshu.io/upload_images/188188-0dc827d9bba6f3b4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

導出:這里要分清楚導出的是數據庫還是數據表,不然會遇到像 導出p3.png 圖所示的錯誤。

![導出p1.png](http://upload-images.jianshu.io/upload_images/188188-1c7d38f6a4fc77b3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![導出p2.png](http://upload-images.jianshu.io/upload_images/188188-76f82a04d87ed147.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![導出p3.png](http://upload-images.jianshu.io/upload_images/188188-bc3a5c5c89b655e1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)


#####二、使用代碼創建數據庫

```
<?php
/**
 * Created by PhpStorm.
 * User: a-hing
 * Date: 2017/4/4
 * Time: 下午11:03
 */

//數據庫連接,test是數據庫的名字,使用完成之后注意關閉數據庫連接
$con = mysqli_connect("localhost","root","root");
if (!$con)
{
    die('Could not connect: ' . mysqli_error($con));
}

//創建數據庫
if (mysqli_query($con,"CREATE DATABASE userinfo"))
{
    echo "Database created";
}
else
{
    echo "Database created error: " . mysqli_error($con);
}

//使用該數據庫
mysqli_select_db($con,"userinfo");

//1、創建表  2、 插入數據 (不重復創建)
if(!mysqli_query($con, "SELECT * FROM yourInfo")) {
    //創建表
    $sql = "CREATE TABLE yourInfo (sid varchar(12),sname varchar(20),sage int)";
    mysqli_query($con,$sql);

    //向表中插入數據
    $insert = "INSERT yourInfo (sid, sname, sage) VALUES ('123456','sam',18)";
    mysqli_query($con, $insert);
}

//從表中查詢數據
$query = "SELECT * FROM yourInfo";
$result = mysqli_query($con, $query);

while($row = mysqli_fetch_array($result))
{
    echo "\n".$row['sid']."\t".$row['sname']."\t".$row['sage']."\n";
}

//最后關閉數據庫連接
mysqli_close($con);
```


###4、文章發布系統

這里推薦一個相關的demo - “文章發布系統” [教程](http://www.imooc.com/learn/116),有講解,有源碼。可以很好的鞏固了數據庫的相關操作。

我自己也跟著demo練習了一遍 有興趣參考我的[demo](https://github.com/A-Hing/PutArticle)
不同之處有:
1、多處的mysql_query更換成mysqli_query。
2、文章的id換成了article_id。
3、修改了某些的SQL語句。
4、添加了注釋。添加了注釋。添加了注釋


#####最后附上遇到過的問題:
1、[You don't have permission to access /MAMP/ on this server](https://www.drupal.org/node/645574)
2、echo打印不出表單的內容,看看[echo print() print_r() var_dump()的區別](http://www.cnblogs.com/tylerdonet/p/3702527.html)
3、遇到調試不出來的環境問題,不妨重啟MAMP的server或者重啟電腦,你會有意外的收獲。
4、php  $_POST 獲取表單信息為空,是因為phpstorm默認63342端口,把端口號改成你服務器的端口號就可以,如:MAMP默認是8888。
5、如果遇到中文入庫亂碼的話,建議直接安裝數據庫工具修改encoding。非常簡單粗暴。



最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容