巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
赞助文档Help

PHP与MySQL开辟的8个技能小结

一佰互联网站建造(www.taishanly.com) 宣布日期 2020-04-30 09:22:29 阅读数: 106

1. PHP 中数组的利用
在操纵数据库时,利用接洽关系数组(associatively-indexed arrays)非常有赞助,上面咱们看一个根基的数字格局的数组遍历:
复制代码 代码以下:
<?php
$temp[0] = "richmond";
$temp[1] = "tigers";
$temp[2] = "premiers";

for($x=0;$x<count($temp);$x++)
{
echo $temp[$x];
echo " ";
}
?>

可是别的一种加倍节流代码的体例是:
复制代码 代码以下:
<?php
$temp = array("richmond", "tigers", "premiers");
foreach ($temp as $element)
echo "$element ";
?>

foreach 还能输入笔墨下标:
复制代码 代码以下:
<?php
$temp = array("club" => "richmond",
"nickname" =>"tigers",
"aim" => "premiers");

foreach ($temp as $key => $value)
echo "$key : $value ";
?>

PHP 手册中描写了约莫 50 个用于处置数组的函数。
2. 在 PHP 字符串中插手变量
这个很简略的:
复制代码 代码以下:
<?php
$temp = "hello"
echo "$temp world";
?>

可是须要申明的是,虽然上面的例子不毛病:
复制代码 代码以下:
<?php
$temp = array("one" => 1, "two" => 2);
// 输入:: The first element is 1
echo "The first element is $temp[one].";
?>

可是若是后面阿谁 echo 语句不双引号引发来的话,就要报错,是以倡议利用花括号:
复制代码 代码以下:
<?php
$temp = array("one" => 1, "two" => 2);
echo "The first element is {$temp["one"]}.";
?>

3. 接纳接洽关系数组存取查问成果
看上面的例子:
复制代码 代码以下:
<?php
$connection = mysql_connect("localhost", "albert", "shhh");
mysql_select_db("winestore", $connection);

$result = mysql_query("SELECT cust_id, surname,
firstname FROM customer", $connection);

while ($row = mysql_fetch_array($result))
{
echo "ID: {$row["cust_id"]} ";
echo "Surname {$row["surname"]} ";
echo "First name: {$row["firstname"]} ";
}
?>

函数 mysql_fetch_array() 把查问成果的一行放入数组,能够同时用两种体例援用,比方 cust_id 能够同时用上面两种体例:$row["cust_id"] 或$row[0] 。较着,前者的可读性要比后者良多多少了。
在多表连查中,若是两个列名字一样,最好用又名分隔:
SELECT winery.name AS wname,
region.name AS rname,
FROM winery, region
WHERE winery.region_id = region.region_id;

列名的援用为:$row["wname"] 和 $row["rname"]。

在指定表名和列名的环境下,只援用列名:
SELECT winery.region_id
FROM winery

列名的援用为: $row["region_id"]。
堆积函数的援用便是援用名:
SELECT count(*)
FROM customer;

列名的援用为: $row["count(*)"]。
4. 注重罕见的 PHP bug
罕见的 PHP 纠错题目是:
No page rendered by the Web browser when much more is expected
A pop-up dialog stating that the "Document Contains No Data"
A partial page when more is expected
呈现这些环境的大大都缘由并不在于剧本的逻辑,而是 HTML 中存在的 bug 或剧本天生的 HTML 的 bug 。比方贫乏近似 </table>, </form>, </frame> 之类的封闭 Tag,页面就不能革新。处置这个题目的体例便是,查抄 HTML 的源代码。
对庞杂的,不能查到缘由的页面,能够经由过程 W3C 的页面校验法式 http://validator.w3.org/ 来阐发。
若是不界说变量,或变量界说毛病也会让法式变得怪僻。比方上面的死轮回:
复制代码 代码以下:
<?php
for($counter=0; $counter<10; $Counter++)
myFunction();
?>

变量 $Counter 在增添,而 $counter 永久小于 10。这类毛病普通都能经由过程设置较高的毛病报告级别来找到:
复制代码 代码以下:
<?php
error_reporting(E_ALL);

for($counter=0; $counter<10; $Counter++)
myFunction();
?>

5. 接纳 header() 函数处置单部件查问
在良多 Web 数据库利用中,一些功效常常让用户点击一个毗连后,持续逗留在以后页面,如许的任务我叫它“单部件查问”。
上面是一个叫做 calling.php 的剧本:
复制代码 代码以下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<title>Calling page example</title>
</head>
<body>
<a href="action.php">Click here!</a>
</body>
</html>

当用户点击上面的毗连时,就去挪用 action.php。上面是 action.php 的源码:
复制代码 代码以下:
<?php
// 数据库功效
// 重定向
header("Location: $HTTP_REFERER");
exit;
?>

这里有两个罕见的毛病须要提示一下:
挪用 header() 函数后要包罗一个 exit 语句让剧本遏制,不然后续的剧本能够会在头发送前输入。

header() 函数罕见的一个毛病是:
Warning: Cannot add header information - headers already sent...
header() 函数只能在 HTML 输入之前被挪用,是以你须要查抄 php 后面能够存在的空行,空格等等。
6. reload 的题目及其处置
我之前在写 PHP 法式时,常常碰着页面革新时,数据库多处置一次的环境。
咱们来看 addcust.php:
复制代码 代码以下:
<?php
$query = "INSERT INTO customer
SET surname = $surname,
firstname = $firstname";
$connection = mysql_connect("localhost", "fred", "shhh");
mysql_select_db("winestore", $connection);
$result = mysql_query($query, $connection);
?>
<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<title>Customer insert</title>
</head>
<body>
I"ve inserted the customer for you.
</body>
</html>
?>

假定咱们用上面的毗连利用这个法式:
http://www.freelamp.com/addcust. ... &firstname=Fred
若是这个要求只提交一次,OK ,不会有题目,可是若是屡次革新,你就会有多笔记录拔出。
这个题目能够经由过程 header() 函数处置:上面是新版本的 addcust.php:
复制代码 代码以下:
<?php
$query = "INSERT INTO customer
SET surname = $surname,
firstname = $firstname";
$connection = mysql_connect("localhost", "fred", "shhh");
mysql_select_db("winestore", $connection);
$result = mysql_query($query, $connection);
he

header("Location: cust_receipt.php");
?>

这个剧本把阅读重视定向到一个新的页面:cust_receipt.php:
复制代码 代码以下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<title>Customer insert</title>
</head>
<body>
I"ve inserted the customer for you.
</body>
</html>

如许,本来的页面持续革新也不副感化了。
7. 巧用锁机制来进步利用机能
若是咱们要告急运转一个报表,那末,咱们能够对表加写锁,防治别人读写,来进步对这个表的处置速率。
8. 用 mysql_unbuffered_query() 开辟疾速的剧本
这个函数能用来替代 mysql_query() 函数,首要的区分便是 mysql_unbuffered_query() 履行完查问后顿时前往,不须要期待或对数据库加锁。

可是前往的行数不能用mysql_num_rows() 函数来查抄,由于输入的成果集巨细未知。
一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。

相干消息more

14
05月
为甚么网站首页的关头字排名不好_巅云建站

在搜刮引擎的搜刮成果常呈现网站的内页最近的好,网站的SEO优化不是都说的权重最重,排名结果最快,但偶然网站首页乃至连根基的关头字排名都不,... >>概况

28
04月
php对接洽关系数组轮回遍历的完成体例

本文实例报告了php对接洽关系数组轮回遍历的完成体例。分享给大师供大师参考。详细阐发以下:php对近似$age = array("zhangs... >>概况

09
04月
2019年设想师该若何生长?来看这份进阶才能

有些鸟儿必定是关不住的,它的每片羽毛都闪烁着自在的辉煌。设想行业也如斯,行业在变更,设想也会被更多部分、行业所承认。以是设想要均衡好脑洞和... >>概况

30
04月
PHP防CC进犯完成代码

这类时辰您的统计体系(能够是量子、百度等)固然也是统计不到的。不过咱们能够借助于一些防进犯的软件来完成,不过结果偶然并不较着。上面我供给一段... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站