沒什么問題,但是如果是php7操作數(shù)據(jù)庫的話需要使用mysqli來進(jìn)行
10年積累的網(wǎng)站制作、網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有微山免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
//鏈接數(shù)據(jù)庫
$db=mysql_connect("localhost", "root","123456");
$sqlname="database";
mysql_select_db($sqlname,$db);
session_start();
mysql_query("SET NAMES 'utf8'",$db);
?
?
//創(chuàng)建結(jié)果集
$sql = "SELECT * FROM kecheng";
$result = mysql_query($sql);
$rs= mysql_fetch_array($result);
?
?
//修改數(shù)據(jù)
$sql = "UPDATE news SET title='1111' where news_id=1";
$result = mysql_query($sql);
?
?
//刪除數(shù)據(jù)
$sql = "DELETE from news where news_id=1";
$result = mysql_query($sql);
?
?
//添加數(shù)據(jù)
$sql = "INSERT INTO news (title,fenshu) VALUES ('a',1)"
$result = mysql_query($sql);
?
第一步:進(jìn)入php源碼中的"ext/mysql"目錄下
第二步:在當(dāng)前目錄下運(yùn)行phpize命令:/usr/local/php524/bin/phpize
phpize的規(guī)則:去哪個(gè)目錄下運(yùn)行phpize文件,那么就會(huì)在該目錄下生成一個(gè)configure文件。
第三步:運(yùn)行剛才生成的configure文件
命令: ./configure --with-php-config=/usr/local/php524/bin/php-config --with-mysql=/usr/local/mysql/
這里最關(guān)鍵的是通過--with-mysql參數(shù)告訴mysql客戶端的位置。這樣才能生成mysql.so。
實(shí)驗(yàn)的時(shí)候,沒有加這個(gè)參數(shù),結(jié)果錯(cuò)誤:
./configure --with-php-config=/usr/local/php524/bin/php-config
第四步:編譯生成.so文件
第五步:配置php引擎加載該擴(kuò)展。
補(bǔ)充一下:就是去php.ini文件中修改一下配置,加載mysql.so這個(gè)擴(kuò)展(這個(gè)擴(kuò)展文件要放到php指定的擴(kuò)展目錄下面去)
第六步:測(cè)試php引擎是否成功加載該擴(kuò)展編寫文件phpinfo.php,內(nèi)容是:?php?ehco phpinfo();??
運(yùn)行后,可以看到有如下信息顯示:mysqlMySQLSupport ? ?enabledActive PersistentLinks ? ? 0
Active Links ? ? 0
Client API version ? ? 5.1.55
MYSQL_MODULE_TYPE ? ? no value
MYSQL_SOCKET ? ? /tmp/mysql.sock
MYSQL_INCLUDE ? ? no value
MYSQL_LIBS ? ? no value
通過這樣的方式可以確認(rèn),php引擎已經(jīng)成功加載了mysql.so擴(kuò)展。
第七步:已經(jīng)生成的mysql.so。編寫php代碼測(cè)試是否能連接mysql。
一、為什么書中一般是常常是這樣的順序安裝。
先安裝mysql,然后再安裝php,很少看到先安裝php,后安裝mysql?
這樣做。是基于下面原因:安裝好mysql后。mysql.so這個(gè)模塊才能生成。記得一個(gè)細(xì)節(jié):在安裝php的時(shí)候,需要提供mysql的路徑。由php幫助編譯生成mysql.so模塊。mysql.so這個(gè)模塊是在安裝好php的時(shí)候生成的。
生成這個(gè)模塊需要用到一個(gè)東西:mysql客戶端。如果先安裝php,后安裝mysql。那么無法按照原來的方式(由php幫助生成mysql.so模塊)掛接mysql.so。通過實(shí)踐,發(fā)現(xiàn)使用phpize工具生成mysql.so可以解決這個(gè)問題。
二、實(shí)踐生成mysql.so的過程。
大體思路:需要用到php的源碼包才行。通過源碼包中提供的phpize文件(一個(gè)專門掛接php擴(kuò)展的工具)
1、用 mysql_connect 的方法,PHP7會(huì)報(bào)致命錯(cuò)誤
$conn= mysql_connect('localhost','xueyanxiang','xueyanxiang');
Fatal error : Uncaught Error: Call to undefined function mysql_connect() in /Users/xueyanxiang/work/test/xue.php:31 Stack trace: #0 /Users/xueyanxiang/work/test/xue.php(119): xue-run() #1 {main} thrown in? /Users/xueyanxiang/work/test/xue.php ?on line? 31
原因是:
PHP5中使用mysql_connect()函數(shù)進(jìn)行連接,但實(shí)際上,PHP5.5開始,MySQL就不推薦使用了,屬于廢棄函數(shù)
PHP7中貌似已經(jīng)徹底不支持了,根據(jù)官網(wǎng)說明,取而代之的是如下兩個(gè):
本擴(kuò)展自 PHP 5.5.0 起已廢棄,并在將來會(huì)被移除。應(yīng)使用?MySQLi?或?PDO_MySQL?擴(kuò)展來替換之。參見?MySQL:選擇
API?指南以及相關(guān) FAQ?以獲取更多信息。用以替代本函數(shù)的有:
mysqli_connect()
PDO::__construct()
使用時(shí),不要在使用mysql_connect了,可以換用mysqli_connect(),用法基本類似吧,據(jù)說是面向?qū)ο蟮膸臁?/p>
php.ini中,也只有extension=php_mysqli.dll,而不再有extension=php_mysql.dll這個(gè)拓展了。
2、可以使用mysqli,對(duì)象化,方法名與被廢棄的類似
$conn= mysqli_connect('localhost','xueyanxiang','xueyanxiang');
3、PDO工具,推薦使用
$dbh= "mysql:host=localhost;dbname=test";
$db= new PDO($dbh,'xueyanxiang','xueyanxiang');
$objQuery= $db-query("select * from user;");
$res= $objQuery-fetchAll(PDO::FETCH_ASSOC);
不填寫參數(shù)的話,默認(rèn)是關(guān)聯(lián)和索引都有,如下圖
PHP鏈接數(shù)據(jù)庫有幾種方式
mysqli:
?php
$servername = "localhost";
$username = "username";
$password = "password";
// 創(chuàng)建連接
$conn = new mysqli($servername, $username, $password);
// 檢測(cè)連接
if ($conn-connect_error) {
die("連接失敗: " . $conn-connect_error);
}
echo "連接成功";
?
也可以使用PDO進(jìn)行鏈接,前提是你必須在php.ini中開啟PDO:
?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
echo "連接成功";
}
catch(PDOException $e)
{
echo $e-getMessage();
}
?
建議使用PDO,功能更加強(qiáng)大,兼容各種數(shù)據(jù)庫
關(guān)于這個(gè)問題,差不多就是這個(gè)樣子的了,你如果不明白,可以自己去后盾瞅瞅,我這些都是在后盾上學(xué)的,有空可以去看一下,就算不喜歡也沒關(guān)系啊,何樂而不為呢?
PHP 5 的使用者可以使用 mysql extension,mysqli 和 PDO_MYSQL 。PHP 7移除了mysql extension,只剩下后面兩種選擇.
/*
*?mysqli
*?數(shù)據(jù)庫地址,登陸賬號(hào),密碼,數(shù)據(jù)庫名稱
*/
$mysqli?=?new?mysqli("localhost",?"root",?"",?"student");
$sql?=?"SELECT?*?FROM?tb_user";
$result?=?$mysqli-query($sql);
$row?=?$result-fetch_assoc();?//?從結(jié)果集中取得一行作為關(guān)聯(lián)數(shù)組
echo?$row["password"];
/*?free?result?set?*/
$result-free();
/*?close?connection?*/
$mysqli-close();
/*
*?第一個(gè)參數(shù)是mysql:host,第二是dbname,第三個(gè)賬戶名,第四個(gè)密碼
*/
try?{
$pdo?=?new?PDO("mysql:host=localhost;dbname=student",?"root",?"");
}?catch?(PDOException?$e)?{
echo?'Connection?failed:?'?.?$e-getMessage();
}
$sql?=?"select?*?from?tb_user";
echo?$sql?.?"BR";
$pdo-query('set?names?utf8;');
$result?=?$pdo-query($sql);
$rows?=?$result-fetchAll();
foreach?($rows?as?$row)?{
$username?=?$row[1];
$pwd?=?$row[2];
echo?$username;
}