CentOS配置PHP运行环境,即LAMP
yum安装apache服务器
yum安装PHP环境
yum安装MySQL
MySQL一些基本使用
配置LAMP文件
apache服务器
安装apache服务器
yum install httpd httpd-devel
启动apache
/etc/init.d/httpd start
mysql数据库
安装mysql数据库
yum install mysql mysql-server
启动数据库
/etc/init.d/mysqld start
安装php
安装php服务
yum install php php-devel
重启apache服务
/etc/init.d/httpd restart
php拓展
yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc
数据库一些基本配置
- 查看版本信息
rpm -qi mysql-server
- 启动数据库服务(默认是不开启的)
service mysqld start
- 重启数据库服务
service mysqld restart
- 查看数据库服务是否开启
chkconfig --list | grep mysqld
- 设置数据库服务开机启动
chkconfig mysqld on
- 设置帐号和密码(注意设置完毕之后要重启服务)
mysqladmin -u root password 'root'
-
主要配置文件的路径
1、/etc/my.cnf 这是mysql的主配置文件
2、/var/lib/mysql mysql数据库的数据库文件存放位置
3、/var/log mysql数据库的日志输出存放位置 -
查看数据库使用的端口号
netstat -anp
PHP连接数据库
- 测试连接数据库(注意要把mysql的拓展安装好)
<html>
<head>
<meta charset="utf-8">
<title>Connecting MySQL Server</title>
</head>
<body>
<?php
$dbhost = 'localhost:3306'; //mysql服务器主机地址
$dbuser = 'root'; //mysql用户名
$dbpass = 'root';//mysql用户名密码
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($conn);
?>
</body>
</html>
- 创建数据表
<html>
<head>
<meta charset="utf-8">
<title>创建 MySQL 数据库</title>
</head>
<body>
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'root';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('连接错误: ' . mysql_error());
}
echo '连接成功<br />';
$sql = 'CREATE DATABASE RUNOOB';
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('创建数据库失败: ' . mysql_error());
}
echo "数据库 RUNOOB 创建成功\n";
mysql_close($conn);
?>
</body>
</html>
- 删除数据库
修改sql语句即可
$sql = 'DROP DATABASE RUNOOB';
$retval = mysql_query( $sql, $conn );
- 选择要操作的数据库
mysql_select_db( 'RUNOOB' );
- 创建表(注意php是区分大小写的)
<html>
<head>
<meta charset="utf-8">
<title>创建 MySQL 数据表</title>
</head>
<body>
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'root';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('连接失败: ' . mysql_error());
}
echo '连接成功<br />';
$sql = "CREATE TABLE runoob_tbl( ".
"runoob_id INT NOT NULL AUTO_INCREMENT, ".
"runoob_title VARCHAR(100) NOT NULL, ".
"runoob_author VARCHAR(40) NOT NULL, ".
"submission_date DATE, ".
"PRIMARY KEY ( runoob_id )); ";
mysql_select_db( 'RUNOOB' );
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('数据表创建失败: ' . mysql_error());
}
echo "数据表创建成功\n";
mysql_close($conn);
?>
</body>
</html>
- 删除表
$sql = "DROP TABLE runoob_tbl";
- 添加数据(通过页面)
<html>
<head>
<meta charset="utf-8">
<title>向 MySQL 数据库添加数据</title>
</head>
<body>
<?php
if(isset($_POST['add']))
{
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'root';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
if(! get_magic_quotes_gpc() )
{
$runoob_title = addslashes ($_POST['runoob_title']);
$runoob_author = addslashes ($_POST['runoob_author']);
}
else
{
$runoob_title = $_POST['runoob_title'];
$runoob_author = $_POST['runoob_author'];
}
$submission_date = $_POST['submission_date'];
$sql = "INSERT INTO runoob_tbl ".
"(runoob_title,runoob_author, submission_date) ".
"VALUES ".
"('$runoob_title','$runoob_author','$submission_date')";
mysql_select_db('RUNOOB');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('不能够插入数据: ' . mysql_error());
}
echo "插入成功\n";
mysql_close($conn);
}
else
{
?>
<form method="post" action="<?php $_PHP_SELF ?>">
<table width="600" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="250">标题</td>
<td>
<input name="runoob_title" type="text" id="runoob_title">
</td>
</tr>
<tr>
<td width="250">作者</td>
<td>
<input name="runoob_author" type="text" id="runoob_author">
</td>
</tr>
<tr>
<td width="250">提交时间</td>
<td>
<input name="submission_date" type="data" id="submission_date">
</td>
</tr>
<tr>
<td width="250"> </td>
<td> </td>
</tr>
<tr>
<td width="250"> </td>
<td>
<input name="add" type="submit" id="add" value="添加数据">
</td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html>
- 查询数据
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'root';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT runoob_id, runoob_title,
runoob_author, submission_date
FROM runoob_tbl';
mysql_select_db('runoob');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('不能拿到数据: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_NUM))
{
echo "作者 ID :{$row[0]} <br> ".
"标题: {$row[1]} <br> ".
"作者: {$row[2]} <br> ".
"提交时间 : {$row[3]} <br> ".
"--------------------------------<br>";
}
mysql_free_result($retval);
echo "查询成功\n";
mysql_close($conn);
?>
注意:
1、在mysql_fetch_array()函数的第二个参数。有MYSQL_ASSOC和MYSQL_NUM。
2、$row = mysql_fetch_assoc($retval)同样可以获取数据。取值方式和MYSQL_ASSOC一样是通过数据库的字段名取值。
3、注意释放内存:mysql_free_result($retval);。
- where子句查询
$sql = 'SELECT runoob_id, runoob_title,
runoob_author, submission_date
FROM runoob_tbl
WHERE runoob_author="Sanjay"';
- update更新操作
$sql = 'UPDATE runoob_tbl
SET runoob_title="Learning JAVA"
WHERE runoob_id=3';
- delete删除数据操作
$sql = 'DELETE FROM runoob_tbl
WHERE runoob_id=3';
- like语句的使用
$sql = 'SELECT runoob_id, runoob_title,
runoob_author, submission_date
FROM runoob_tbl
WHERE runoob_author LIKE "%jay%"';
- mysql排序操作
$sql = 'SELECT runoob_id, runoob_title,
runoob_author, submission_date
FROM runoob_tbl
ORDER BY runoob_author DESC';
- group by语句(分组操作)
SELECT name FROM employee_tbl GROUP BY name;
注意:
WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。
SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
- join连接的使用
$sql = 'SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author';
注意:连接还有左连接、右连接
- mysql中的正则表达式
模式 | 描述 |
---|---|
^ | 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。 |
$ | 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。 |
. | 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。 |
[...] | 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。 |
[^...] | 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。 |
p1 | p2 | p3 | 匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。 |
* | 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。 |
+ | 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。 |
{n} | n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。 |
{n,m} | m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。 |
使用:
SELECT name FROM person_tbl WHERE name REGEXP '^st';
- 事务操作
<?php
$handler=mysql_connect("localhost","root","password");
mysql_select_db("task");
mysql_query("SET AUTOCOMMIT=0");//设置为不自动提交,因为MYSQL默认立即执行
mysql_query("BEGIN");//开始事务定义
if(!mysql_query("insert into trans (id) values('2')"))
{
mysql_query("ROLLBACK");//判断当执行失败时回滚
}
if(!mysql_query("insert into trans (id) values('4')"))
{
mysql_query("ROLLBACK");//判断执行失败回滚
}
mysql_query("COMMIT");//执行事务
mysql_close($handler);
?>
- alter修改表
修改表结构
ALTER TABLE testalter_tbl ADD new_col INT;//添加字段
ALTER TABLE testalter_tbl DROP old_col;//删除字段
修改字段的类型
ALTER TABLE testalter_tbl MODIFY c CHAR(10);
ALTER TABLE testalter_tbl CHANGE j j INT;
修改表名
ALTER TABLE testalter_tbl RENAME TO alter_tbl;
- 注意SQL注入
1、如对用户名等用户输入内容进行检测
if (preg_match("/^\w{8,20}$/", $_GET['username'], $matches))
{
$result = mysql_query("SELECT * FROM users
WHERE username=$matches[0]");
}
else
{
echo "username 输入异常";
}
2、利用PHP的MySQL扩展中提供的函数来转义特殊字符
if (get_magic_quotes_gpc())
{
$name = stripslashes($name);
}
$name = mysql_real_escape_string($name);
mysql_query("SELECT * FROM users WHERE name='{$name}'");
3、防止LIKE中的注入
$sub = addcslashes(mysql_real_escape_string("%something_"), "%_");
// $sub == \%something\_
mysql_query("SELECT * FROM messages WHERE subject LIKE '{$sub}%'");
网友评论