
<?php |
function db() { |
global $app; |
static $db; //1个请求内多个函数共用1个连接. |
if ($db) { |
return $db; |
} else { |
$db = @new mysqli( |
$app['db_host'], |
$app['db_user'], |
$app['db_pass'], |
$app['db_name'], |
$app['db_port'] |
); |
} |
if ($db->connect_errno) { |
echo $db->connect_error; |
exit(); |
} |
$db->set_charset('utf8'); |
return $db; |
} |
|
function insert($title = '', $content = '') { |
global $app; |
$db = db(); |
$stmt = $db->prepare('INSERT INTO posts (post_title, post_content) VALUES(?, ?)'); |
$stmt->bind_param('ss', $title, $content); |
$stmt->execute(); |
return ($stmt->affected_rows !== 0) ? |
array(true, 'insert_id' => $stmt->insert_id) : |
array(false, 'insert_id' => $stmt->insert_id); |
} |
|
function select($id = '') { |
global $app; |
$db = db(); |
if (!empty($id)) { |
return $db->query('SELECT * FROM posts WHERE id = '.intval($id))->fetch_all(MYSQLI_ASSOC); |
} else { |
return $db->query('SELECT * FROM posts')->fetch_all(MYSQLI_ASSOC); |
} |
} |
|
function select_v2($id = '') { |
global $app; |
$db = db(); |
if (!empty($id)) { |
$stmt = $db->prepare('SELECT * FROM posts WHERE id = ?'); |
$stmt->bind_param('i', $id); |
} else { |
$stmt = $db->prepare('SELECT * FROM posts'); |
} |
$stmt->execute(); |
//get_result和fetch_all需要mysqlnd支持,PHP从5.4开始内置mysqlnd. |
return $stmt->get_result()->fetch_all(MYSQLI_ASSOC); |
} |
|
function update($id, $title = '', $content = '') { |
global $app; |
$db = db(); |
$db->autocommit(false); |
//$db->begin_transaction(); //PHP从5.5开始才有这个函数,之前版本用autocommit即可. |
$stmt = $db->prepare('UPDATE posts SET post_title = ?, post_content = ? WHERE id = ?'); |
$stmt->bind_param('ssi', $title, $content, $id); |
$stmt->execute(); |
$db->commit(); |
//UPDATE时,如果更新的内容跟原来的内容一样,affected_rows也会返回0. |
return ($stmt->affected_rows !== 0) ? true : false; |
} |
|
function delete($id) { |
global $app; |
$db = db(); |
$db->query('DELETE FROM posts WHERE id = '.intval($id)); |
return ($db->affected_rows !== 0) ? true : false; |
} |
|
function delete_v2($id) { |
global $app; |
$db = db(); |
$stmt = $db->prepare('DELETE FROM posts WHERE id = ?'); |
$stmt->bind_param('i', $id); |
$stmt->execute(); |
return ($stmt->affected_rows !== 0) ? true : false; |
} |
|
header('Content-Type: text/plain; charset=utf-8'); |
|
$app = array( |
'db_host' => '127.0.0.1', |
'db_user' => 'root', |
'db_pass' => 'xxxx', |
'db_name' => 'test', |
'db_port' => 3306 |
); |
|
$table = "CREATE TABLE IF NOT EXISTS posts ( |
id int(10) unsigned NOT NULL AUTO_INCREMENT, |
post_title varchar(255) NOT NULL DEFAULT '', |
post_content text NOT NULL DEFAULT '', |
PRIMARY KEY (`id`) |
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;"; |
|
//db()->query('DROP TABLE IF EXISTS posts;') or exit(); |
db()->query($table) or exit(); |
|
echo "var_export(insert('标题1', '内容1'));\n"; |
var_export(insert('标题1', '内容1')); |
echo "\n\n"; |
|
echo "var_export(insert('标题2', '内容2'));\n"; |
var_export(insert('标题2', '内容2')); |
echo "\n\n"; |
|
echo "var_export(select());\n"; |
var_export(select()); |
echo "\n\n"; |
|
echo "var_export(update(2, '标题2_更新','内容2_更新'));\n"; |
var_export(update(2, '标题2_更新','内容2_更新')); |
echo "\n\n"; |
|
echo "var_export(select(2));\n"; |
var_export(select(2)); |
echo "\n\n"; |
|
echo "var_export(delete(2));\n"; |
var_export(delete(2)); |
echo "\n\n"; |
|
echo "var_export(select());\n"; |
var_export(select()); |
echo "\n\n"; |



