PHP_MySQL教程-第二天while循环与数据库操作第1/2页_PHP教程
第一页 while循环
在这一课里,我们将会继续深入下去,使用PHP和MySQL来写出一些简单而有用的页面。我们从昨天创建的数据库开始,显示库中的数据,但是会再稍微加以润色。
首先,我们用下面的代码来查询数据库内容。
$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM employees",$db);
echo "
姓名 | 职位 |
%s %s | %s |
?>
您可能已经注意到,我们在这个程序里加进了一些新东西。最明显的是while()循环。该循环是说,只要数据库里还有记录可读(使用mysql_fetch_row()函数),那就把该记录赋给变量$myrow,然后执行大括号({})内的指令。仔细看一下这里,这部分是比较重要的。
我们应该注意一下mysql_fetch_row()函数。这里有一点小问题,它返回的是一个数组,必须以数组下标来访问其中的某个字段。第一个字段下标为0,第二个是1,依此类推。在执行某些复杂查询时,这么做简直实在是太烦琐了。
现在我们更仔细地研究一下循环过程。程序前几行我们在第一课的例子中已经看到过了。然后,在while()循环中,我们从查询结果中读取一条记录并把该记录赋给数组$myrow。接着,我们用printf函数把数据中的内容显示在屏幕上。随后,循环反复执行,读取下一条记录赋给$myrow。这样继续下去,直到所有记录都已被读取完为止。
使用while()循环的一个好处是,如果数据库查询没有返回任何记录,那您也不会收到错误信息。在刚执行循环语句时,循环条件就不满足,不会有任何数据赋给$myrow,程序就直接往下运行了。
但是如果查询未返回任何数据,我们怎么让用户知道这一点呢?我们也许该提供点儿相关的消息给用户吧。这是可以做到的,下面我们就看看怎么做。>>
第二页 if-else
请看下面的程序。
$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM employees",$db);
if ($myrow = mysql_fetch_array($result)) {
echo "
姓名 | 住址 |
%s %s | %s |
} else {
echo "对不起,没有找到记录!";
}
?>
这段程序中包含有不少新内容,不过这些内容都相当简单。首先是mysql_fetch_array()函数。该函数与mysql_fetch_row()十分相近,只有一点不同:使用这个函数时,我们可以通过字段名而不是数组下标来访问它返回的字段,比如$myrow["first"]。这样我们就可以省不少力气了。另外,程序中还加进了do/while循环和if-else条件判定语句。
if-else条件判定语句的含意是,如果我们成功地把一条记录赋给了$myrow变量,那就继续;否则,就跳到else部分,执行那里的指令。
do/while循环是我们在上页中用户的while()循环的一个变体。我们要用到do/while的原因是:在最初的if语句中,我们已经把查询返回的第一条记录赋给变量$myrow了。如果这时我们执行一般的while循环(比如,while ($myrow = mysql_fetch_row($result)),那我们就会把第二条记录赋给$myrow,而第一条记录就被冲掉了。但是do/while循环可以让我们执行一次循环体内容之后再来判定循环条件。因此,我们就不会不小心漏掉第一条记录了。
最后,如果查询结果没有任何记录的话,程序就会执行包含在else{}部分的那些语句。如果您想看到这部分程序的执行情况,可以把SQL语句改为SELECT * FROM employees WHERE id=6,或改成其他形式,使得查询结果中没有任何记录。
下面我们来扩充一下循环if-else 代码,使得页面内容更加丰富。相信您会喜欢的。
第三页 第一个程序脚本
我们刚刚学到了循环语句,下面我们将在一个更加实际一点的例子中看看如何运用它。但是在这之前,您应该知道如何处理Web表格、查询参数串,以及表单的GET方法和POST方法。不久之前我们刚刚有文章介绍这部分内容,您如果对这一部分还不太熟悉的话可以看看那篇文章。
现在,我们要处理查询参数串,正如您所知道的,有三种方法可以把参数内容写入到查询参数串中。第一种是在表格中使用GET方法;第二种是在浏览器的地址栏中输入网址时直接加上查询参数;第三种是把查询参数串嵌入到网页的超链接中,使得超链接的内容象下面这样:。我们现在要用到最后这一种方法。
一开始,我们再来查询我们的数据库,列出员工姓名。看看下面的程序,其中大部分内容我们都已经很熟悉了。
$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM employees",$db);
if ($myrow = mysql_fetch_array($result)) {
do {
printf("%s %s
n",
$PATH_INFO, $myrow["id"], $myrow["first"], $myrow["last"]);
} while ($myrow = mysql_fetch_array($result));
} else {
echo "对不起,没有找到记录!";
}
?>
这里没什么特别的,只是printf函数有些不同。那我们就来仔细研究一下。
首先要注意的是,所有的引号前面都有一个反斜杠。这个反斜杠告诉PHP直接显示后面的字符,而不能把后面的字符当作程序代码来处理。另外要注意变量$PATH_INFO的用法。该变量在所用程序中都可以访问,是用来保存程序自身的名称与目录位置的。我们之所以用到它是因为要在页面中再调用这个程序本身。使用$PATH_INFO,我们可以做到,即使程序被挪到其他目录,甚至是其他机器上时,我们也能保证正确地调用到这个程序。
正如我刚才提到的,程序所生成的网页,其中包含的超链接会再次调用程序本身。不过,再次调用时,会加入一些查询参数。
PHP见到查询参数串中包含有“名字=值”这样的成对格式时,会作一些特别的处理。它会自动生成一个变量,变量名称与取值都与查询参数串中所给定的名称和取值相同。这一功能使得我们可以在程序中判断出是第一次执行本程序还是第二次。我们所要做的只是问问PHP$id这个变量是否存在。
当我知道这个问题的答案后,我可以在第二次调用程序时显示一些不同的结果出来。请看:
$db = mysql_connect("localhost", "root");
mysql_select_db("mydb",$db);
// display individual record
// 显示单条记录内容
if ($id) {
$result = mysql_query("SELECT * FROM employees WHERE id=$id",$db);
$myrow = mysql_fetch_array($result);
printf("名: %sn
", $myrow["first"]);
printf("姓: %sn
", $myrow["last"]);
printf("住址: %sn
", $myrow["address"]);
printf("职位: %sn
", $myrow["position"]);
} else {
// show employee list
// 显示员工列表
$result = mysql_query("SELECT * FROM employees",$db);
if ($myrow = mysql_fetch_array($result)) {
// display list if there are records to display
// 如果有记录,则显示列表
do {
printf("%s %s
n", $PATH_INFO,
$myrow["id"], $myrow["first"], $myrow["last"]);
} while ($myrow = mysql_fetch_array($result));
} else {
// no records to display
// 没有记录可显示
echo "对不起,没有找到记录!";
}
}
?>
到这里,我们已经学会了第一个真正有用的PHP/MySQL脚本程序!现在,我们要看看怎样把Web表格加进来,并且向数据库发送数据。
第四页 向服务器发送数据
现在我们从数据库读取数据已经没有太多困难了。但是怎么反过来向数据库发送数据呢?其实这不是PHP的问题。
首选,我们创建一个带有简单表格的网页。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.

PHP는 동적 웹 사이트를 구축하는 데 사용되며 해당 핵심 기능에는 다음이 포함됩니다. 1. 데이터베이스와 연결하여 동적 컨텐츠를 생성하고 웹 페이지를 실시간으로 생성합니다. 2. 사용자 상호 작용 및 양식 제출을 처리하고 입력을 확인하고 작업에 응답합니다. 3. 개인화 된 경험을 제공하기 위해 세션 및 사용자 인증을 관리합니다. 4. 성능을 최적화하고 모범 사례를 따라 웹 사이트 효율성 및 보안을 개선하십시오.

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

Docker에서 MySQL을 시작하는 프로세스는 다음 단계로 구성됩니다. MySQL 이미지를 가져와 컨테이너를 작성하고 시작하고 루트 사용자 암호를 설정하고 포트 확인 연결을 매핑하고 데이터베이스를 작성하고 사용자는 데이터베이스에 모든 권한을 부여합니다.
