php mysql唯一索引报错_PHP操作MySQL(1)

1. 前置知识点回顾

PHP工作原理:

(1). PHP的代码传递给PHP包, 请求PHP进行解析并编译.

(2). 服务器根据PHP代码的请求读取数据库.

(3). 服务器与PHP包共同根据数据库中的数据和其他运行变量, 将PHP代码解析成普通的HTML代码.

(4). 解析后的代码发送个浏览器, 浏览器对代码进行分析获取可视化内容.

(5). 用户通过浏览器浏览网站的内容.

2. PHP操作数据库的基本步骤(按顺序)

(1). 建立连接: $connection = mysqli_connect('host', 'username', 'password', 'databases_name', port......);

(2). 判断连接是否成功: mysqli_connect_error()-----连接成功返回0, 失败返回1

(3). 选择数据库: mysqli_select_db($connection, 'another_database_name')

(4). 设置字符集: mysql_set_charset($connection, 'utf8');

(5). 书写SQL语句: $sql = "select * from db_name"; $result = mysqli_query($connection, $sql);.........

(6). 执行SQL语句: mysqli_query();

(7). 解析结果集: mysqli_fetch_array($result, resulttype::MYSQLI_ASSOC);

其中: MYSQLI_ASSOC代表以关联数组编号, MYSQLI_NUM代表以索引数组编号

mysqli_fetch_assoc(), mysqli_fetch_all();

(8). 关闭连接: mysqli_close($connection);

例如:

$connection = mysqli_connect('localhost', 'root', 'root', 'test', 3306);//var_dump($connection);

//判断连接是否成功

if( !mysqli_connect_error() ){echo '连接成功!'.'';

}else{die(mysqli_connect_error());

}//(更换)选择数据库

mysqli_select_db($connection, 'mrsoft');//设置字符集

mysqli_set_charset($connection, 'utf8');//操作数据库

$sql = "select * from `books`";$result = mysqli_query($connection, $sql);var_dump($result);$array = mysqli_fetch_array($result,MYSQLI_ASSOC);var_dump($array);//关闭连接

mysqli_close($connection);//var_dump($connection);

?>

说明: 如果在多个网页中都要进行频繁的数据库访问, 则可以建立与数据库服务器的持续连接来提高效率.

持续连接的方法: mysqli_pconnect()代替mysqli_connect(), 系统自动返回已经建立好的持续连接的ID号.

3. 添加, 更新, 删除数据

1d540948d5295028102785b2078bc4e6.png

$connect = mysqli_connect('localhost', 'root', 'root', 'test', 3306);//测试连接是否成功

if( mysqli_connect_error() ){die('连接失败, 原因: '. mysqli_connect_error());

}//连接成功

//选择数据库

mysqli_select_db($connect, 'test');//设置字符集

mysqli_set_charset($connect, 'utf8');//书写SQL语句

$sql_insert ='INSERT INTO user1(username, age, sex, addr, married, salary) VALUES("周星星", 28, "男", "香港", 0, 9999999)';$sql_update = 'UPDATE user1 SET username="张三丰" WHERE id=5';$sql_delete = 'DELETE FROM user1 WHERE id=4';//执行SQL语句

$result_insert = mysqli_query($connect, $sql_insert);$result_update = mysqli_query($connect, $sql_update);$result_delete = mysqli_query($connect, $sql_delete);//解析SQL语句执行结果

if($result_insert){echo '执行成功!' . mysqli_affected_rows($connect) . '条数据, 刚才插入的数据的ID是' . mysqli_insert_id($connect);

}else{echo '执行失败!';

}if($result_update){echo '执行成功!' .'更新了' .mysqli_affected_rows($connect) . '条数据.';

}else{echo '执行失败!';

}if($result_delete){echo '执行成功! 成功删除了'.mysqli_affected_rows($connect) . '条数据.';

}else{echo '执行失败!';

}//关闭连接, 释放资源.

mysqli_close($connect);?>

4. 简单的查询与结果解析

$link = mysqli_connect('localhost', 'root', 'root');//测试连接是否成功

if( mysqli_connect_error()){die( '连接失败! 原因: '. mysqli_connect_error());

}//连接成功

//选择数据库test

mysqli_select_db($link, 'test');//设置字符集

mysqli_set_charset($link, 'utf8');//书写SQL语句

$sql1 = 'SELECT * FROM user1';$sql2 = 'SELECT * FROM user1 WHERE id<8';//执行SQL语句

$result = mysqli_query($link, $sql2);//解析结果

if($result){//echo '执行成功! ';

echo '

';//$data = mysqli_fetch_array($result, MYSQLI_ASSOC);

// var_dump($data);

while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){var_dump($row);

}

}else{echo '执行失败! ';

}?>

结果:

array(8) {

["id"]=>

string(1) "5"

["username"]=>

string(9) "张三丰"

["age"]=>

string(2) "38"

["sex"]=>

string(3) "男"

["addr"]=>

string(6) "上海"

["married"]=>

string(1) "0"

["salary"]=>

string(8) "15000.00"

["userDesc"]=>

string(16) "user description"

}

array(8) {

["id"]=>

string(1) "6"

["username"]=>

string(9) "张子怡"

["age"]=>

string(2) "39"

["sex"]=>

string(3) "女"

["addr"]=>

string(6) "北京"

["married"]=>

string(1) "1"

["salary"]=>

string(8) "85000.00"

["userDesc"]=>

string(16) "user description"

}

array(8) {

["id"]=>

string(1) "7"

["username"]=>

string(6) "汪峰"

["age"]=>

string(2) "42"

["sex"]=>

string(3) "男"

["addr"]=>

string(6) "深圳"

["married"]=>

string(1) "1"

["salary"]=>

string(8) "95000.00"

["userDesc"]=>

string(16) "user description"

}

5. 复杂查询与结果解析

$link = mysqli_connect('localhost', 'root', 'root');//测试连接是否成功

if( mysqli_connect_error() ){die( '连接失败! 原因: '.mysqli_connect_error());

}//连接成功

//选择数据库

mysqli_select_db($link, 'test');//设置字符集

mysqli_set_charset($link, 'utf8');//书写SQL语句

$sql = 'SELECT * FROM user1 WHERE id<12 AND id>8';//执行SQL语句

$result = mysqli_query($link, $sql);//解析SQL语句执行结果

if($result) {echo '

';echo '
idusernameagesexaddrmarriedsalaryuserdesc
{$row['id']}{$row['username']}{$row['age']}{$row['sex']}{$row['addr']}{$row['married']}{$row['salary']}{$row['userDesc']}

}echo '

';

}//关闭连接

mysqli_close($link);?>

结果:

2b71caf3f8bfd1fefa87c5c28cc9f141.png

6. 程序错误排查

(1)可能的错误原因:

SQL语句语法错误, 数据类型错误, 唯一索引列数据错误......

(2)程序错误排查:

判断SQL语句的执行结果, 查看数据影响条数, 获取SQL语句执行的错误信息[ 调用mysqli_error($link), mysqli_errorno($link) ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>