前言
在正式開始學習前,我們需要開啟mysqli擴充套件,使用phpinof()你可以看到如下展示就說明開啟成功:
若沒有看到mysqli擴充套件在windows伺服器下,開啟php.ini檔案,將php_mysqli.dll開啟即可。
注意:
從PHP7開始預設不再支援mysql擴充套件,即不再支援mysql_*系列函數。請使用mysqli連線資料庫。
mysqli即支援php5也支援php7。
建立表結構:
mysql> create table if not exists users (
-> id int(10) unsigned primary key auto_increment not null,
-> username varchar(30),
-> password varchar(100),
-> createtime varchar(40) not null,
-> createip binary(16)
-> );
Query OK, 0 rows affected (0.02 sec)
index.html 程式碼
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PHP操作MySQL資料庫</title>
</head>
<body>
<form action="connect.php" method="post">
使用者名稱:<input type="text" name="username"><br />
密碼:<input type="password" name="password"><br />
重複密碼:<input type="password" name="repassword"><br />
<input type="submit" value="提交">
</form>
</body>
</html>
connect.php程式碼如下:
<?php
if (trim($_POST['password']) != trim($_POST['repassword'])) {
exit('兩次密碼不一致,請返回上一頁');
}
$username = trim($_POST['username']);
$password = md5(trim($_POST['password']));
$time = time();
$ip = $_SERVER['REMOTE_ADDR'];
$conn = mysqli_connect('localhost', 'root', '123456');
//如果有錯誤,存在錯誤號
if (mysqli_errno($conn)) {
echo mysqli_error($conn);
exit;
}
mysqli_select_db($conn, 'php');
mysqli_set_charset($conn, 'utf8');
$sql = "insert into users(username,password,createtime,createip)
values('" .$username. "','" .$password. "','" .$time. "','".$ip."')";
//echo $sql.PHP_EOL;
$result = mysqli_query($conn, $sql);
if ($result) {
echo '資料寫入成功'.PHP_EOL;
} else {
echo '資料寫入失敗';
}
echo '當前使用者插入的ID為:' . mysqli_insert_id($conn);
mysqli_close($conn);
?>
list.php程式碼如下:
<?php
$conn = mysqli_connect('localhost', 'root', '123456', 'php');
if (mysqli_errno($conn)) {
mysqli_error($conn);
exit;
}
mysqli_set_charset($conn, 'utf8');
$sql = "select id,username,createtime,createip from users order by id desc";
//進行降序排序
$result = mysqli_query($conn, $sql);
if ($result && mysqli_num_rows($result)) {
//查詢出來的行數可以使用mysqli_num_rows。這個函數要求傳入$result查詢的結果變數。
//如果有結果則顯示列表,如果沒有結果我們產生一句提示即可。
echo '<table width="800" border="1">';
while ($row = mysqli_fetch_assoc($result)) {
//使用到的函數是mysqli_fetch_assoc,返回的會是一個關聯陣列。
//這個函數讀取一個結果集,會向後移動一次。讀取到最後沒有結果的時候會返回bool值的false。因此,我們選擇while來配合mysqli_fetch_assoc。
//每次迴圈的結果賦值給$row,$row中是關聯陣列。因此我在這次迴圈中,可以將行和列都顯示出來。
echo '<tr>';
echo '<td>' . $row['username'] . '</td>';
echo '<td>' . date('Y-m-d H:i:s', $row['createtime']) . '</td>';
echo '<td>' . long2ip($row['createip']) . '</td>';
echo '<td><a href="edit.php?id=' . $row['id'] . '">編輯使用者</a></td>';
echo '<td><a href="delete.php?id=' . $row['id'] . '">刪除使用者</a></td>';
echo '</tr>';
}
echo '</table>';
} else {
echo '沒有資料';
}
mysqli_close($conn);
?>
end