Mac OS下PHP环境搭建及PHP操作MySQL常用方法小结
作者:trigkit4 发布时间:2024-05-08 10:16:31
Mac本地环境搭建
在Mac系统,我们可以使用MAMP Pro (官方网站:https://www.mamp.info/en/)软件来搭建本地服务器。安装好这款软件,网站的目录在 /Applications/MAMP/htdocs 文件夹里,只需将文件放入该文件夹中,就可以通过http://localhost:8888来访问了,或者通过点击如下红色下划线按钮来快速访问站点。
mac系统下安装php,两行即可。
brew tap josegonzalez/homebrew-php
brew install php54
安装完后配置一下,你就可以使用phpstorm来愉快地编程啦。安装的php路径在/usr/local/bin/php
数据库基本操作
1)用户的 Web 浏览器发出 HTTP 请求,请求特定 Web 页面。
2)Web服务器收到.php 的请求获取该文件,并将它传到 PHP 引擎,要求它处理。 3)PHP 引擎开始解析脚本。 脚本中有一条连接数据库的命令, 还有执行一个查询的令。命
PHP 打开通向 MYSQL 数据库的连接,发送适当的查询。
4)MYSQL 服务器接收数据库查询并处理。将结果返回到 PHP 引擎。
5)PHP 以你去哪干完成脚本运行,通常,这包括将查询结果格式化成 HTML 格式。然
后再输出 HTML 返回到 Web 服务器。
6)Web服务器将 HTML 发送到浏览器。
MySQL 常用数据类型
整数型:TINYINT,SMALLINT,INT,BIGINT
浮点型:FLOA T,DOUB LE,DECIMAL(M,D)
字符型:CHAR,VARCHAR
日期型:DA TETIME,DA TE,TIMESTA MP
备注型:TINYTEXT,TEXT,LONGTEXT
MySQL 数据库操作
1)显示当前存在的数据库
>SHOWDATABASES;
2)选择你所需要的数据库
>USEguest;
3)查看当前所选择的数据库
>SELECTDATABASE();
4)查看一张表的所有内容
>SELECT*FROMguest; //可以先通过SHOWTABLES;来查看有多少张表
5)根据数据库设置中文编码
>SET NAMESgbk; //set names utf8;
6)创建一个数据库
>CREATEDATABASEbook;
7)在数据库里创建一张表
>CREATETABLEusers (
>username VARCHAR(20),//NOT NULL 设置不允许为空
>sex CHAR(1),
>birth DATETIME);
8)显示表的结构
>DESCIRBEusers;
9)给表插入一条数据
>INSERT INTO users (username,sex,birth) VALUES('jack','male',NOW());
PHP连接MySQL数据库
连接数据库
<?php
header('COntent-Type:text/html;charset=utf-8');//设置页面编码,如果文件是gbk编码,则charset也应用gbk
//@表示如果出错了,不要报错,直接忽略
//参数:服务器地址,用户名和密码
echo (!!@mysql_connect('localhost','root','*****'));//1
?>
我们用双感叹号!!来将资源句柄转换成布尔值,正确输出1,错误则输出错误信息。而如果前面加了@符号,则忽略错误信息,不会输出错误信息。
对于错误消息的处理,我们可以使用mysql_error()函数来输出错误消息:
mysql_connect('localhost','root','****') or die('数据库连接失败,错误信息:'.mysql_error());//对于密码错误的提示:数据库连接失败,错误信息:Access denied for user 'root'@'localhost' (using password: YES)
die() 函数输出一条消息,并退出当前脚本。该函数是 exit() 函数的别名。
数据库连接参数,可以用常量来存储,这样就不能被随意修改,更加安全。
<meta charset="utf-8">
<?php
//定义常量参数
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PWD','345823');//密码
$connect = mysql_connect(DB_HOST,DB_USER,DB_PWD) or die('数据库连接失败,错误信息:'.mysql_error());
echo $connect;//Resource id #2
?>
值得注意的是,mysql_connect()括号内的常量可不能加引号,否则肯定出错。
选择指定的数据库
<?php
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PWD','345823');//密码
define('DB_NAME','trigkit');//在phpmyadmin创建一个名为trigkit的数据库
//连接数据库
$connect = mysql_connect(DB_HOST,DB_USER,DB_PWD) or die('数据库连接失败,错误信息:'.mysql_error());
//选择指定数据库
mysql_select_db(DB_NAME,$connect) or die('数据库连接错误,错误信息:'.mysql_error());//将表名字故意写错,提示的错误信息:数据库连接错误,错误信息:Unknown database 'trigkt'
?>
通常不需要使用 mysql_close(),因为已打开的非持久连接会在脚本执行完毕后自动关闭
mysql_select_db(database,connection):选择MySQL数据库
获取记录集
<meta charset="utf-8">
<?php
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PWD','345823');//密码
define('DB_NAME','trigkit');
//连接数据库
$connect = mysql_connect(DB_HOST,DB_USER,DB_PWD) or die('数据库连接失败,错误信息:'.mysql_error());
//选择指定数据库
mysql_select_db(DB_NAME,$connect) or die('数据表连接错误,错误信息:'.mysql_error());
//从数据库里把表的数据提出来(获取记录集)
$query = "SELECT * FROM class";//在trigkit数据库中新建一张'表'
$result = mysql_query($query) or die('SQL错误,错误信息:'.mysql_error());//故意将表名写错:SQL错误,错误信息:Table 'trigkit.clas' doesn't exist
?>
mysql_query() 函数执行一条 MySQL 查询。
输出数据
<meta charset="utf-8">
<?php
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PWD','345823');//密码
define('DB_NAME','trigkit');
//连接数据库
$connect = mysql_connect(DB_HOST,DB_USER,DB_PWD) or die('数据库连接失败,错误信息:'.mysql_error());
//选择指定数据库,设置字符集
mysql_select_db(DB_NAME,$connect) or die('数据表连接错误,错误信息:'.mysql_error());
mysql_query('SET NAMES UTF8') or die('字符集设置出错'.mysql_error());
//从数据库里把表的数据提出来(获取记录集)
$query = "SELECT * FROM class";
$result = mysql_query($query) or die('SQL错误,错误信息:'.mysql_error());
print_r(mysql_fetch_array($result,MYSQL_ASSOC));
?>
释放结果集资源(仅需要在考虑到返回很大的结果集时会占用多少内存时调用。)
<?php
mysql_free_result($result);
?>
增删改查
新增数据
<?php
require 'index.php';
//新增数据
$query = "INSERT INTO CLASS(
name,
email,
point,
regdate)
VALUES (
'小明',
'xiaoming@163.com',
100,
NOW()
)";
@mysql_query($query) or die('新增错误:'.mysql_error());
?>
我们将上面的代码保存为index.php,丢进/Applications/MAMP/htdocs/ 文件夹。将上面的代码保存为demo.php,放进同样的目录内。Mac系统获取文件的路径很简单,只需将文件拉进终端即可显示路径名。
修改数据
我们假设要修改的数据的名称是小明,id为2,将他的point分数修改为80分,代码如下:
<?php
require 'index.php';
//修改数据
$query = 'UPDATE class SET point=80 WHERE id=2';
@mysql_query($query);
?>
删除数据
<?php
require 'index.php';
//删除数据
$query = "DELETE FROM class WHERE id=2";
@mysql_query($query);
mysql_close();
?>
显示数据
<?php
require 'index.php';
//显示数据
$query = "SELECT id,name,email,regdate FROM class";
$result = mysql_query($query) or die('sql语句错误:'.mysql_error());
print_r(mysql_fetch_array($result));
mysql_close();
?>
或者显示指定值数据:
$data = mysql_fetch_array($result);
echo $data['email'];//显示email
echo $data['name'];//显示name
其他常用函数
mysql_fetch_lengths(): 取得结果集中每个输出的长度
mysql_field_name(): 取得结果中指定字段的字段名
mysql _fetch_row():从结果集中取得一行作为枚举数组
mysql_fetch_assoc(): 从结果集中取得一行作为关联数组
mysql_fetch_array(): 从结果集中取得一行作为关联数组,或数字数组,或二者兼有
mysql_num_rows(): 取得结果集中行的数目
mysql_num_fields():取得结果集中字段的数目
mysql_get_client_info(): 取得 MySQL 客户端信息
mysql_get_host_info(): 取得 MySQL 主机信息
mysql_get_proto_info(): 取得 MySQL 协议信息
mysql_get_server_info(): 取得 MySQL 服务器信息


猜你喜欢
- 最近在学习python,做一些python练习题github上几年前的练习题有一题是这样的:使用 Python 实现:对着电脑吼一声,自动打
- 前言报错如下:Could not open JDBC Connection for transaction; nested exceptio
- 本文实例讲述了python实现对象列表根据某个属性排序的方法。分享给大家供大家参考,具体如下:对于一个已有的python list, 里面的
- 本文章的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,滥用技术产生的风险与本人无关。本文章是自己学习的一些记
- 背景随着Web技术的发展和移动互联网的发展,Hybrid技术已经成为一种前端开发的主流技术方案。那什么是Hybrid App呢?Hybrid
- 假设现有需求如下:需要一个页面分页展示信息,在该页面添加搜索框以提供检索功能。那么,我们知道,展示信息和检索功能是在同一个页面,也就是共用一
- 环境:MacOS_Cetalina_10.15.1、Mysql8.0.18、Docker_2.0.0.31、docker仓库搜索mysqld
- 之前写了个python脚本用selenium+phantomjs爬新帖子,在循环拉取页面的过程中,phantomjs总是block住,使用W
- Scrapy是什么?先看官网上的说明,http://scrapy-chs.readthedocs.io/zh_CN/latest/intro
- Python2.7还是一个比较稳定的版本,目前80%以上的公司都在使用python2.7的版本。他不会在安装的时候报编码错误之类的问题。但是
- 先说结论1. oracle: oracle 默认没有排序规则2. mysql2.1 innoDB引擎: 默认查询按照id正序排序2.2 my
- 在 Python 中,集合(set)是一种无序且不重复的集合类型,它是由花括号 {} 括起来的一组元素。如果你想向集合中添加一个元素,你可以
- 有这样一个要求,它要创建一个SQL Server查询,其中包括基于事件时刻的累计值。典型的例子就是一个银行账户,因为你每一次都是在不同的时间
- MySql 在修改表结构的时候可能会中断产品的正常运行影响用户体验,甚至更坏的结果,丢失数据。不是所有的数据库管理员、程序员、系统管理员都非
- JavaScript Date.toDateString()方法返回一个Date对象的人类可读形式的日期部分。语法Date.to
- Function getIpvalue(clientIP)'得到客户端的IP转换成长整型,返回值getIpvalue&nb
- 简单介绍下:CSS 图片拼合 (CSS sprites) 可有效降低图片文件的 HTTP 连接请求数. 多个图片将以一定间距合并为一个大图片
- 本文主要跟大家分享在类unix操作系统下supervisor的使用以及一些关于进程的知识一、问题背景1、背景如何才能让一个进程摆脱终端,获得
- 本文实例为大家分享了python3 pygame接小球游戏的具体代码,供大家参考,具体内容如下操作方法:鼠标操作截图:直接放代码:# -*-
- 获取 系统时间 函数“NOW()” 函数 能够获得当前系统日期和时间,格式如下:&ldquo