php怎么组合数组,php操作数据库的三步骤?
第一步:链接数据库
MYSQLi_connect('主机地址','mysql用户名','mysql密码 ','数据库','端口号')
返回:如果连接成功,返回资源类型的标志符号;如果连接失败,返回false。
如果我们与mysql建立的连接不只一条,那么以后操作数据库的各种函数都必须传入返回的连接符号;
如果我们与mysql建立的连接只有一条,那么以后操作数据库的各种函数就不必传入这个标识符号。建议都传入。
密码为空可以省略密码
$conn= mysqli_connect("localhost", "root", "123456", "dbname");
第二步:检测数据库连接是否成功
mysqli_connect_errno()与 mysqli_connect_error()
mysqli_connect_errno(); 返回上次连接数据库错误的错误号,连接成功返回0
mysqli_connect_error(); 返回上次连接数据库的错误信息
if(mysqli_connect_errno($conn)){
die("数据库连接失败!失败信息:".mysqli_connect_error($conn));
}
前面两步合并的写法:连接数据库同时判断
$conn = mysqli_connect("localhost", "root", "", "mydb") or die("数据库连接失败!失败信息:".mysqli_connect_error($conn));
第三步:选择数据库
mysqli_select_db($link,$dbname)
参数:①标识符 ②连接数据库名称
连接成功,返回true;连接失败,返回false
如果修改数据库成功,则资源标识符中的数据库就会发生变动;
如果修改失败而没有通过代码终止操作,则后续代码可以使用原数据库继续执行
mysqli_select_db($conn, "mydb") or die("数据库选择失败!");
第四步:设置字符集编码格式
mysqli_set_charset($link,$charset) 只能设置为utf8而不能是utf-8
mysqli_set_charset($conn,"utf8") or die("数据库编码集设置失败!");
第五步:编写sql语句
$sql = "select * from 表名";
第六步:执行sql语句
mysqli_query($link,$sql)
如果是(DML)增、删、改,将返回布尔类型是否成功
返回上一次操作时受影响的行数 mysqli_affected_rows($link)
如果是(DQL)查询,将返回资源结果集
返回资源结果集中的行数 mysql_num_rows($result)
返回资源结果集中的字段数 mysql_num_fields($result)
如果查询失败,返回false
$res = mysqli_query($conn,$sql);
mysqli_insert_id($conn); 执行插入语句是返回上次插入最新插入的主键ID
第七步:解析结果集
var_dump(mysqli_fetch_array($res)); 处理结果集,返回关联数组和索引数组 不常用
参数① 需要处理的结果集
参数② 返回哪种数组格式
MYSQL_ASSOC 关联数组
MYSQL_NUM 数字数组
MYSQL_BOTH 默认。同时产生关联和数字数组
echo "<table border='1' style='border-collapse:collapse;text-align:center;width:200px;'>";
echo "<thead bgcolor='lightblue' style='color:#ffffff;'><td>ID</td><td>姓名</td><td>年龄</td><td>性别</td></thead>";
while($row =mysqli_fetch_assoc($res)){ // 返回关联数组 指针遍历 常用
echo "<tr>";
foreach($row as $value){
echo "<td>{$value}</td>";
};
echo "</tr>";
}
echo "</table>";
mysqli_data_seek($res,0); 设置结果集指针位置,此式表达复位至0
var_dump(mysqli_fetch_object($res));
var_dump(mysqli_fetch_row($res)); 返回索引数组
var_dump(mysqli_fetch_object($res)); 返回对象
var_dump(mysqli_fetch_fields($res)); 返回结果集中每一列的字段信息
第八步:关闭资源与结果集
mysqli_free_result()和mysqli_close()
mysqli_free_result($res); //释放查询资源结果集
mysqli_close($conn); //关闭数据库连接
php获取数组键名和键值?
直接用键名获取,比如:$a = array('name'=>'admin');你知道键名是name,那么直接输出:echo $a['name']就行了。
PHP
PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。
PHP的多语言支持一般怎么做?
把需要多国语言的标签,做成可以替换的模板标签,或者关联数组。
比如内容中有{Language},内存数组里有
$i18n=load("Chinese.dic");
#此时$i18n['Language']为'语言'
直接替换内容的{Language}
PHP判断多维数组值的大小?
$arr = [ [1, 2, 3, 4, 5], [1, 2, 3, 4, 5, 6, 7, 8], [1, 2, 3, 4, 5, 6, 7]];echo count($arr); // 3 二维数组长度echo count($arr[0]);// 5 二维数组子数组长度echo count($arr[1]);// 8 二维数组子数组长度你可以去后盾人平台看看,里面的东西不错
PHP多维数组按值排序?
主要用到的PHP函数 array_multisort()
1.先实现指定多维数组一个字段排序根据二维数组的id值来排序,转换后的数组格式如下:
function arraySortByOneField($data, $field, $sort = SORT_DESC)
{
$field = array_column($data, $field);
array_multisort($field,$sort,$data);
return $data;
}
$data = array(0=>array('id'=>7, 'name'=>'Apple', 'age'=> 18),1=>array('id'=>8, 'name'=>'Bed', 'age'=>17),2=>array('id'=>6, 'name'=>'Cos', 'age'=>16),3=>array('id'=>5, 'name'=>'Cos', 'age'=>14));
$newArray = arraySortByOneField($data, 'id', SORT_DESC);
var_dump($newArray );
2.实现多维数组的指定两个字段排序根据二维数组的多个属性值来排序,转换后的数组格式如下:
function sortArrByManyField()
{
$args = func_get_args();
if(empty($args)){
return null;
}
$arr = array_shift($args);
if(!is_array($arr)){
throw new Exception("第一个参数不为数组");
}
foreach($args as $key => $field){
if(is_string($field)){
$temp = array();
foreach($arr as $index=> $val){
$temp[$index] = $val[$field];
}
$args[$key] = $temp;
}
}
$args[] = &$arr;//引用值
call_user_func_array('array_multisort',$args);
return array_pop($args);
}
$data = array(0=>array('id'=>7, 'name'=>'Apple', 'age'=> 18),1=>array('id'=>8, 'name'=>'Bed', 'age'=>17),2=>array('id'=>6, 'name'=>'Cos', 'age'=>16),3=>array('id'=>5, 'name'=>'Cos', 'age'=>14));
$newArray = arraySortByManyField($data, 'id', SORT_ASC, 'name', SORT_ASC, 'age', SORT_DESC);
var_dump($newArray );