1. PHP에서 배열의 사용
데이터베이스를 운영할 때 연관 인덱스 배열을 사용하는 것이 매우 유용합니다. 디지털 형식의 기본 배열 탐색을 살펴보겠습니다.
$temp[ 0] = "리치몬드";
$temp[1] = "호랑이";
$temp[2] = "최고급"
for($x=0;$x
echo $temp[$x];
echo " ";
?>그러나 코드를 절약하는 또 다른 방법은 다음과 같습니다.
$temp = array("richmond", "tigers", "premiers")
foreach ($temp as $element)
echo "$element "; >?>
foreach는 텍스트 아래 첨자를 출력할 수도 있습니다:
$temp = array("club" => "richmond",
"nickname" =>"tigers ",
"aim" => "premiers");
foreach ($temp as $key => $value)
echo "$key : $value ";
?>
PHP 매뉴얼에는 배열 작업에 필요한 약 50가지 함수가 설명되어 있습니다.
2. PHP 문자열에 변수를 추가합니다.
매우 간단합니다.
$temp = "hello"
echo "$temp world" > ;
그러나 다음 예는 틀린 것은 아니지만
$temp = array("one" => 1, "two" => 2);
// 출력:: 첫 번째 요소는 1
echo "첫 번째 요소는 $temp[one]입니다."
?>그러나 다음 echo 문이 double로 묶이지 않은 경우; quote 그렇다면 오류가 보고되므로 중괄호 사용을 권장합니다:
$temp = array("one" => 1, "two" => 2) ;
echo "첫 번째 요소는 {$temp["one"]}입니다."
?>3. 연관 배열을 사용하여 쿼리 결과에 액세스합니다.
🎜>$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:t{$row["cust_id"] }n";
echo "Surnamet{$row["surname"]}n";
echo "이름:t{$row["firstname"]}nn";
}
?>
함수 mysql_fetch_array() 쿼리 결과의 행을 동시에 두 가지 방법으로 참조할 수 있는 배열에 넣습니다. 예를 들어 cust_id는 다음 두 가지 방법으로 동시에 참조할 수 있습니다. $row["cust_id"] 또는 $row[0]. 분명히 전자가 후자보다 훨씬 더 읽기 쉽습니다.
다중 테이블 연속 쿼리에서 두 열 이름이 동일한 경우 별칭으로 구분하는 것이 가장 좋습니다.
SELECT winery.name AS wname,
region.name AS rname,
FROM winery, 지역
WHERE winery.region_id = 지역.region_id
열 이름의 참조는 $row["wname"] 및 $row["rname"]입니다.
테이블 이름과 열 이름을 지정한 경우 열 이름만 인용합니다.
SELECT winery.region_id
FROM winery
열 이름 참조: $row["region_id"] .
집계 함수의 참조는 참조 이름입니다:
SELECT count(*)
FROM customer;
열 이름의 참조는 $row["count(*)"]입니다.
4. 일반적인 PHP 버그에 주의하세요
일반적인 PHP 디버깅 문제는 다음과 같습니다.
더 많은 내용이 예상되는데 웹 브라우저에서 페이지가 렌더링되지 않습니다.
"문서에 없음이 포함되어 있습니다"라는 팝업 대화 상자가 나타납니다. 데이터"
더 많은 내용이 예상되는 부분 페이지
이러한 상황의 대부분의 이유는 스크립트의 논리가 아니라 HTML의 버그 또는 스크립트에서 생성된 HTML의 버그입니다.예를 들어 , , 과 같은 닫는 태그가 없으면 페이지를 새로 고칠 수 없습니다. 이 문제에 대한 해결책은 HTML의 소스 코드를 보는 것입니다.
이유를 알 수 없는 복잡한 페이지의 경우 W3C의 페이지 검증 프로그램 http://validator.w3.org/을 통해 분석할 수 있습니다.
변수가 정의되지 않거나, 변수 정의가 잘못되면 프로그램이 이상해집니다. 예를 들어 다음 무한 루프는 다음과 같습니다.
for($counter=0; $counter<10; $Counter )
myFunction()
?> $Counter는 증가하고 $counter는 항상 10보다 작습니다. 이러한 유형의 오류는 일반적으로 더 높은 오류 보고 수준을 설정하여 찾을 수 있습니다:
error_reporting(E_ALL)
for($counter=0; $counter<10; $Counter )
myFunction();
?>
5. 단일 부분 쿼리를 처리하려면 header() 함수를 사용하세요.
많은 웹 데이터베이스 애플리케이션에서 일부 기능을 사용하면 사용자가 현재 페이지에서는 이런 종류의 작업을 "단일 구성 요소 쿼리"라고 부릅니다.
다음은 Calling.php라는 스크립트입니다.
"-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www. w3.org/TR/html4/loose.dtd" >
여기를 클릭하세요!
사용자가 위 링크를 클릭하면 action.php가 호출됩니다. 다음은 action.php 소스 코드입니다.
// 데이터베이스 함수
// Redirection
header("Location: $HTTP_REFERER")
exit; 🎜> ?>
여기서 기억해야 할 두 가지 일반적인 실수가 있습니다:
header() 함수를 호출한 후 스크립트를 중지하려면 종료 문을 포함해야 합니다. 그렇지 않으면 후속 스크립트가 헤더가 전송됩니다.
header() 함수의 일반적인 오류는 다음과 같습니다.
경고: 헤더 정보를 추가할 수 없습니다. 헤더가 이미 전송되었습니다...
header() 함수는 HTML 출력 전에만 호출할 수 있으므로 다음을 수행해야 합니다. PHP를 확인하십시오. 앞에 빈 줄, 공백 등이 있을 수 있습니다.
6. Reload 문제와 해결 방법
PHP 프로그램을 작성하다 보면 페이지를 새로 고칠 때 데이터베이스가 한 번 더 처리하는 상황을 자주 접했습니다.
addcust.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)
? >
"-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd " > ;
I'
?>
다음 연결과 함께 이 프로그램을 사용한다고 가정합니다. &firstname=Fred
이 요청을 한 번만 제출하면 문제가 없지만 여러 번 새로 고치면 여러 레코드가 삽입됩니다.
이 문제는 header() 함수를 통해 해결될 수 있습니다. addcust.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);
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"
.