>백엔드 개발 >PHP 튜토리얼 >PHP+MariaDB 데이터베이스 운영을 위한 기본 기술 요약 메모

PHP+MariaDB 데이터베이스 운영을 위한 기본 기술 요약 메모

不言
不言원래의
2018-06-01 11:09:501778검색

본 글에서는 주로 PHP+MariaDB 데이터베이스 운용의 기본 기술을 소개하며, PHP+MariaDB 데이터베이스 연결과 판단을 예시 형태로 요약 분석하고, 사용자 로그인, 관리, 삭제 등의 구현 기술과 주의사항을 설명합니다. 관련 작업은 PHP+MariaDB를 기반으로 합니다. 친구는

을 참조할 수 있습니다. 이 기사의 예는 PHP+MariaDB 데이터베이스 작업의 기본 기술을 요약합니다. 참고하실 수 있도록 자세한 내용은 다음과 같습니다.

PHP+MySQL은 비교적 흔한 조합입니다. 저는 주관적으로 오라클을 좋아하지 않기 때문에, 오라클에 MySQL을 인수한 후 뼈에 약간의 변화가 생겼습니다. , 그래서 저는 여전히 MySQL의 원래 오픈 소스 신념을 고수하는 MariaDB로 변경했습니다. 본질적으로 MySQL의 핵심이므로 다음 데이터베이스 작업 코드는 모두 MySQL에서 직접 사용할 수 있습니다.

PHP+Apache 기본 환경을 설정하고 밤에 MySQL 데이터베이스를 설치한 후 가장 간단한 데이터베이스 연결 코드를 작성했는데 그 결과 다음과 같은 고전적인 오류가 발생했습니다. 치명적인 오류: 'mysqli' 클래스를 찾을 수 없음

<?php
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
?>

사실 이 문제는 비교적 간단합니다. PHP 엔진에서 반환되는 오류를 통해 우리는 mysqli가 올바르게 로드되지 않았음을 알 수 있습니다. 대부분의 문제는 php.ini 파일 "extension"의 구성에서 발생합니다. =php_mysqli.dll" 이 구성 항목 앞의 기본 세미콜론은 제거되지 않습니다. 저는 이런 실수를 한 것이 아닙니다. PHP 설치 경로의 ext 디렉토리에도 php_mysqli.dll 파일이 있습니다. 그러면 문제가 발생한 곳은 어디입니까? 문제는 php.ini 파일의 잘못된 위치에서 계속 발생해야 합니다. 좀 읽어본 결과 "extension_dir = "ext""이 수정되지 않은 것을 발견했습니다. 당시에는 PHP 엔진이 자동으로 이 상대 경로를 찾을 수 있다고 생각해서 그것에 대해 많이 생각하지 않았습니다. 그런데 생각해 보니 PHP 엔진은 Apache에 의해 로드되고 Apache는 이러한 상대적 관계를 알지 못합니다. 이 위치를 절대 경로로 변경해 보겠습니다. 그러면 괜찮습니다. 실제로 이 코드를 작성하기 전에 mysqli 구성 요소가 로드되었는지 확인할 수 있습니다. 이 방법은 다른 구성 요소를 미리 로드하는 데 적합합니다.

if (extension_loaded(&#39;mysqli&#39;))
{
  echo &#39;yes&#39;;
}
else
{
  echo &#39;no&#39;;
}

다음은 사용자 등록과 시스템 로그인을 이용하여 PHP+MySQL의 가장 기본적인 동작 방법을 기록합니다.

1. 데이터베이스, 테이블 및 사용자를 생성합니다.

DROP DATABASE IF EXISTS `test`;
CREATE DATABASE `test`
USE `test`;
DROP TABLE IF EXISTS `tbl_user`;
CREATE TABLE `tbl_user` (
 `username` varchar(32) NOT NULL default &#39;&#39;,
 `password` varchar(32) NOT NULL default &#39;&#39;,
 PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;

2. 각각 Register.html 및 login.html인 등록 및 로그인 HTML 페이지를 만듭니다. 아래 그림과 같습니다:

3. 등록 및 로그인 코드:

register_do.php

<?php
  $username = $_POST[&#39;username&#39;];
  $password = $_POST[&#39;password&#39;];
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $query = "select * from tbl_user where username = &#39;" . $username . "&#39;";
  echo &#39;<p>&#39; . $query;
  $result = $db->query($query);
  if ($result)
  {
    echo &#39;<p>&#39; . &#39;The user &#39;. $username .&#39; exist&#39;;
    echo &#39;<p>&#39; . &#39;<a href="register.html" rel="external nofollow" rel="external nofollow" >Back to register</a>&#39;;
  }
  else
  {
    $query = "insert into tbl_user values (&#39;". $username ."&#39;, &#39;". $password ."&#39;)";
    echo &#39;<p>&#39; . $query;
    $result = $db->query($query);
    if ($result)
    {
      echo &#39;<p>&#39; . &#39;<a href="register.html" rel="external nofollow" rel="external nofollow" >Register successful</a>&#39;;
    }
  }
?>

login_do.php

<?php
  $username = $_POST[&#39;username&#39;];
  $password = $_POST[&#39;password&#39;];
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $query = "select * from tbl_user where username = &#39;" . $username . "&#39; and password = &#39;" . $password . "&#39;";
  echo &#39;<p>&#39; . $query;
  $result = $db->query($query);
  if ($result->num_rows)
  {
    echo &#39;<p>&#39; . &#39;<a href="login.html" rel="external nofollow" rel="external nofollow" >Login successful</a>&#39;;
  }
  else
  {
    echo &#39;<p>&#39; . &#39;<a href="login.html" rel="external nofollow" rel="external nofollow" >Login failed</a>&#39;;
  }
?>

userlist.php

rreee

4. 페이지의 최종 표시 효과는 다음과 같습니다.

5. 사용자 코드 삭제:

<?php
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  echo &#39;<p>&#39; . &#39;All user as follows:&#39;;
  $query = "select * from tbl_user order by username";
  if ($result = $db->query($query))
  {
    while ($row = $result->fetch_assoc())
    {
      echo &#39;<p>&#39; . &#39;Username : &#39; . $row[&#39;username&#39;] . &#39;  <a href="userdelete.php?username=&#39; . $row[&#39;username&#39;] . &#39;" rel="external nofollow" >delete</a>&#39;;
    }
  }
?>

책 추가. 페이지는 아래와 같습니다(bookadd.html):

2. 테이블 생성 스크립트는 다음과 같습니다.

<?php
  $username = $_GET[&#39;username&#39;];
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $query = "delete from tbl_user where username = &#39;" . $username . "&#39;";
  echo $query;
  if ($result = $db->query($query))
  {
    echo &#39;<p>&#39; . &#39;Delete user &#39; . $username . &#39; successful&#39;;
  }
  else
  {
    echo &#39;<p>&#39; . &#39;Delete user &#39; . $username . &#39; failed&#39;;
  }
  echo &#39;<p>&#39; . &#39;<a href="userlist.php" rel="external nofollow" >Back to user list</a>&#39;;
?>

3 추가된 로직 처리 코드는 다음과 같습니다(bookadd_do.php). 여기서 특히 주의해야 할 점은 이 문장 "$db->query("set names utf-8")"는 데이터베이스에 데이터를 쓸 때 utf-8 인코딩 및 디코딩을 의미한다는 것입니다. 데이터베이스 테이블의 동작을 표시하는 데 사용됩니다. 한자가 깨지는 것을 방지하기 위한 코덱을 설정합니다. 나중에 이 기술적 사항에 대해 구체적으로 기사를 기록하겠습니다.

DROP DATABASE IF EXISTS `test`;
CREATE DATABASE IF NOT EXISTS `test`;
USE `test`;
DROP TABLE IF EXISTS `tbl_book`;
CREATE TABLE IF NOT EXISTS `tbl_book` (
 `isbn` varchar(32) NOT NULL,
 `title` varchar(32) NOT NULL,
 `author` varchar(32) NOT NULL,
 `price` float NOT NULL,
 PRIMARY KEY (`isbn`)
) ENGINE=InnoDB DEFAULT CHARSET=utf-8;

$db->query("set names utf-8")”,代表向数据库写入数据时,采用utf-8编解码,显示的对数据库表操作的编解码进行设置,以防止中文的乱码。后面我会专门针对这个技术点记录一篇文章。

<?php
  $isbn = $_POST[&#39;isbn&#39;];
  $title = $_POST[&#39;title&#39;];
  $author = $_POST[&#39;author&#39;];
  $price = $_POST[&#39;price&#39;];
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $db->query("set names utf-8"); //特别注意这句话
  $stmt = $db->stmt_init();
  $stmt->prepare("insert into tbl_book values (?,?,?,?)");
  $stmt->bind_param("sssd", $isbn, $title, $author, $price);
  $stmt->execute();
  echo &#39;<p>&#39; . &#39;Affect rows is &#39; . $stmt->affected_rows;
  echo &#39;<p>&#39; . &#39;<a href="booklist.php" rel="external nofollow" >Go to book list page</a>&#39;;
?>

4、显示图书信息的逻辑代码如下,同样注意这句话“$db->query("set names utf-8")4. 책 정보를 표시하는 논리 코드는 다음과 같습니다. 또한 "$db->query("set names utf-8")" 문장에 주의하세요. :

<?php
  $db = new mysqli(&#39;localhost&#39;, &#39;root&#39;, &#39;admin&#39;, &#39;test&#39;);
  if (mysqli_connect_errno())
  {
    echo &#39;<p>&#39; . &#39;Connect DB error&#39;;
    exit;
  }
  $db->query("set names utf-8"); //特别注意这句话
  $stmt = $db->stmt_init();
  $stmt->prepare("select * from tbl_book");
  $stmt->bind_result($isbn, $title, $author, $price);
  $stmt->execute();
  while($stmt->fetch())
  {
    echo &#39;ISBN : &#39; . $isbn . &#39;<p>&#39;;
    echo &#39;Title : &#39; . $title . &#39;<p>&#39;;
    echo &#39;Author : &#39; . $author . &#39;<p>&#39;;
    echo &#39;Price : &#39; . $price . &#39;<p>&#39;;
    echo &#39;<p>&#39; . &#39;-----------------------------&#39; . &#39;<p>&#39;;
  }
?>

5. 표시되는 페이지는 아래와 같습니다.

자, 여기에는 가장 기본적인 부분을 기록해 두었습니다. PHP 엔진은 매우 편리한 데이터베이스 작동 방법을 제공하지만 개발은 결코 아닙니다. 이렇게 간단합니다. 다양한 예외를 어떻게 포착하고 처리할지 신중하게 고려해야 합니다. 데이터베이스 디자인 역시 매우 흥미로운 주제입니다.

관련 권장 사항:

PHP pdo 기반 데이터베이스 작업 클래스 [mysql, sqlserver 및 oracle 지원 가능]

위 내용은 PHP+MariaDB 데이터베이스 운영을 위한 기본 기술 요약 메모의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.