> 백엔드 개발 > PHP 튜토리얼 > PHP 기초: PHP 프로그래밍 소개

PHP 기초: PHP 프로그래밍 소개

WBOY
풀어 주다: 2023-09-03 19:08:01
원래의
976명이 탐색했습니다.
<p></p> <div class="content-block-wysi" content-block-type="Wysi"> <p>우리 산업이 굉장히 어려운 산업이라는 사실은 부인할 수 없습니다. 제2외국어를 배우는 것을 고려해 본 적이 있나요? 그럼 5개는 어때요? 현대적인 웹 개발자가 되고 싶다면 이것이 바로 당신에게 필요한 것입니다. 이를 염두에 두고 조심하지 않으면 수많은 혼란스러운 블로그 게시물이나 기술 서적을 맹목적으로 쳐다보면서 곧 압도당하게 될 수 있습니다. <!--more--></p> <blockquote class="pullquote"> <p> 다른 모든 것과 마찬가지로 중요한 것은 한 번에 한 단계씩 진행하는 것입니다. </p> </blockquote> <p>모든 것과 마찬가지로 중요한 것은 한 번에 한 걸음씩 나아가는 것입니다. 한 달 동안 영어를 배우지 못한 자신을 탓하시나요? 당연히 아니지. 그런 다음 동일한 수준의 사고를 프로그래밍 여정에 적용하세요. 이러한 일에는 시간이 걸리지만 계속해서 전진하는 한 금세 목표에 도달할 수 있습니다. 멈추지 마세요! </p> <p>첫 번째 단계는 HTML입니다. <code>&amp;lt;div&amp;gt;</code>가 무엇에 사용되는지 알아보세요. 시맨틱 태그를 사용하여 콘텐츠를 구축하는 방법을 알아보세요. 스타일이 지정되지 않은 기본 웹페이지를 구축하세요. </p> <p> 짐작하셨겠지만 두 번째 단계는 CSS입니다. 페이지 요소의 스타일을 지정하는 방법을 알아보세요. "관심사 분리"의 의미와 이것이 HTML 및 CSS에 어떻게 적용되는지 알아보세요. 첫 번째 간단한 웹사이트를 완성해보세요. </p> <p>세 번째 단계는 개발자가 자신의 전문 분야로 진출하기 시작하는 것입니다. 이 시점에서 당신은 이전과는 전혀 다른 호황을 누리고 있는 JavaScript의 세계로 뛰어들 수 있습니다. 또는 백엔드에 노력을 집중할 수도 있습니다. </p> <blockquote> <p> <em>프론트엔드</em>와 <em>백엔드</em>의 차이점이 헷갈리시나요? 프런트 엔드를 타이타닉호의 침몰로 이어진 빙산의 일각이라고 생각해보세요. 이는 사용자에게 표시되고 상호 작용할 수 있는 애플리케이션의 일부입니다. 반면 백엔드는 지속성부터 검증, 라우팅까지 모든 것을 처리합니다. </p> </blockquote> <p>이 기사에서는 후자의 옵션을 선택했다고 가정하겠습니다. </p> <blockquote class="pullquote"> <p> PHP가 웹을 지배하고 있다는 사실은 부인할 수 없습니다. </p> </blockquote> <p>안타깝게도 앞으로 또 다시 어떤 일을 겪게 됩니다. 가장 인기 있는 옵션인 PHP를 선택해야 할까요? 루비는 어디에 있나요? 요즘 멋있는 아이들은 그런 걸 더 좋아하는 것 같아요. 그럼 또 수염이 나면 어떡하지? 파이썬이 올바른 선택인가요? 하지만 가장 중요한 것은 경험이 전혀 없는데 어떻게 선택을 할 수 있겠습니까? </p> <p>이 경우 - 저자의 의견으로는 - 잘못된 선택은 없습니다. 물론 방향을 바꾸는 데 방해가 되는 것은 없습니다. 실제로 모든 개발자는 여러 언어를 배우도록 권장됩니다! 하지만 지금 중요한 것은 하나만 골라서 잘 배우는 것입니다. </p> <p>PHP가 실제로 가장 아름다운 언어는 아니지만 웹을 지배한다는 사실은 부인할 수 없습니다. 실제로, 이는 세계에서 가장 인기 있는 스크립팅 언어입니다. 이것의 이점은 모든 PHP 문제가 제기되고, 해결되고, 문서화되었음을 확신할 수 있다는 것입니다. 알면 위로가 됩니다. 학습에 있어 가장 취약한 단계에 있더라도 여러분의 문앞에는 도움을 줄 준비가 되어 있는 크고 친근한 커뮤니티가 있습니다. 더욱이 PHP는 Composer 및 Laravel과 같은 도구 덕분에 전례 없는 현대 르네상스를 경험하고 있습니다. </p> <hr> <h2>PHP란 무엇인가요? </h2> <p>PHP는 <em>PHP: Hypertext Preprocessor</em>(예, 개발자들은 재귀 농담을 좋아합니다)의 약자로서 웹용으로 특별히 제작된 스크립팅 언어입니다. 하지만 이것이 여전히 당신에게는 아무런 의미가 없을 가능성이 있습니다. 스크립팅 언어? 아? 간단한 HTML 대신 PHP를 선택하는 경우는 언제입니까? 글쎄, 어쩌면 예일 수도 있습니다. PHP를 성공적으로 설치했다고 가정하고 바탕 화면의 새 폴더에 <code>index.php</code> 파일을 만들고 다음을 추가합니다. </p> 으아악 <blockquote> <p>예, 이것은 기술이 향상됨에 따라 매우 익숙해지게 될 유비쿼터스 "<em>hello world</em>" 예입니다. 모든 언어/프레임워크/도구마다 하나씩 있습니다! </p> </blockquote> <p>이 코드를 실행하려면 PHP에 내장된 서버를 사용하세요. 자주 사용하는 명령줄 도구(Mac 사용자의 경우 터미널)로 전환하고 프로젝트 폴더로 <code>cd</code>한 다음 <code>php -S localhost:8888</code>를 사용하여 서버를 시작합니다. 이 명령은 "<code>cd</code> 到项目文件夹,并使用 <code>php -S localhost:8888</code> 启动服务器。此命令翻译为“<em>运行服务器,并使其可通过浏览器在本地主机、端口 8888 进行访问”。快来尝试一下吧!打开Goog​​le Chrome,浏览到<code>localhost:8888</code>,你会在页面上看到“Hello world*”!漂亮! <code>echo</code>서버를 실행하고 로컬 호스트, 포트 8888의 브라우저를 통해 액세스할 수 있도록 합니다"로 해석됩니다. 와서 시험해 보세요! Google Chrome을 열고 <code>localhost:8888</code>로 이동하면 페이지에 "Hello world*"가 표시됩니다. 예쁜! <code>echo</code>는 주어진 값만 출력하는 언어 구성입니다. </em></p> <blockquote> <p><strong>Tip</strong>: MAMP 및 WAMP는 명령줄을 뒤질 필요 없이 Mac 또는 PC에 PHP, MySQL 및 Apache를 설치할 수 있는 탁월한 원클릭 솔루션입니다. 이는 학습 초기 단계에서 유용한 옵션이 될 수 있습니다. </p> </blockquote> <p><img src="https://img.php.cn/upload/article/000/887/227/169373924846732.png" alt="PHP 基础知识:PHP 编程简介"></p> <p><!-- end img --></p> <p>诚然,这并不是世界上最令人兴奋的事情。事实上,您可能会想,“<em>为什么我不能将“Hello world”直接写入 HTML 页面,从而完全不需要 PHP?</em>”这是真的;对于这个例子来说,它没有任何作用。然而,当输出本质上是动态的时,像 PHP 这样的脚本语言就变得特别有用。如果您希望问候语引用通过 URL 的查询字符串(地址栏中问号后面的文本)传递的值,而不是 <em>world</em>,该怎么办?这是一个更新的示例,它就实现了这一点!</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">&amp;lt;?php echo 'Hello, ' . $_GET['person']; </pre><div class="contentsignin">로그인 후 복사</div></div> <p>啊,这引入了一些新技术。首先,分隔 <em>Hello</em> 字符串和令人困惑的 <code>$_GET</code> 的单个句点允许您连接(或分组)值。在本例中,我们希望打印“<em>Hello, *”,然后打印 <code>$_GET['person']</code> 表示的值。这就是我们所说的超全局数组。为了简单起见,可以将其视为从 URL 的查询字符串*获取</em>值的一种方法。</p> <p>通过加载 <code>localhost:8888/?person=Joe</code> 来测试这一点。如果配置正确,网页现在应该显示“<em>Hello, Joe</em>”。通过将 <code>Joe</code> 替换为您自己的名称来尝试一下。请注意每次刷新页面时输出如何更新?这对于静态 HTML 来说根本不可能实现。</p> <p>成熟编程的关键之一是考虑代码中每一个可能的路径。例如,如果没有 <code>person</code> 密钥可用怎么办?也许查询字符串被完全省略了。在这种情况下,肯定会抛出错误,因为 <code>person</code> 键不存在。解决办法是什么?虽然这确实只是一个简单的例子,但考虑所有可能的结果仍然很重要。让我们提供一个默认值。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">&amp;lt;?php if (isset($_GET['person'])) { $person = $_GET['person']; } else { $person = 'Joe'; } echo 'Hello, ' . $person; </pre><div class="contentsignin">로그인 후 복사</div></div> <p>尽管有更简化的方法可以实现这一点,但上面的示例是一个很好的起点。这也是您对条件语句的第一次介绍。以与处理现实生活中的场景相同的方式处理代码。例如,“<em>如果我们没有牛奶,就去商店。否则,就呆在家里。</em>”这种思路可以使用以下逻辑转换为 PHP:</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">$outOfMilk = true; if ($outOfMilk) { echo 'Going out to the store.'; } else { echo 'Breakfast is served.' } </pre><div class="contentsignin">로그인 후 복사</div></div> <p>在这段代码中,只会将一行文本打印到屏幕上。变量值(动态值)<code>$outOfMilk</code> 将确定控制流。</p> <blockquote> <p><strong>提示:</strong>要在 PHP 中声明变量,请在任何名称前添加美元符号。作为最佳实践,选择可读的变量名称而不是神秘的替代名称。</p> </blockquote> <p>回到前面的例子,只要设置了 <code>$_GET['person']</code> (可以将其视为“可用”的伪名),然后创建一个新的 <code>$person</code> 变量 equal到它的价值。否则,应用默认值。如果您返回到浏览器,它现在应该可以正常运行,无论查询字符串中是否存在 <code>person</code> 键。</p> <h3>安全</h3> <p>不幸的是,我们仍然没有回家。一个关键的编程最佳实践是将安全性置于每项操作的最前沿。即使有了这个令人难以置信的基本示例,我们也为网络上最普遍的安全问题之一打开了大门:XSS(跨站脚本)。对此的真正理解绝对超出了本入门课程的范围(整本书都写过它),但是,这里有一个基本说明:如果 <code>$_GET['person']</code> 等于而不是字符串怎么办,但是一个脚本?</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">http://localhost:8888/?person=&amp;lt;script&amp;gt;alert('ATTACK!')&amp;lt;/script&amp;gt; </pre><div class="contentsignin">로그인 후 복사</div></div> <p>由于该值尚未被清理,因此在执行时,在某些浏览器中会显示警告框。</p> <blockquote> <p>基于 Webkit 的浏览器(例如 Chrome 和 Safari)现在可以提供针对此类攻击的保护。然而,情况并非总是如此,并且在 Firefox 和 Internet Explorer 中仍然如此。</p> </blockquote> <p><img src="https://img.php.cn/upload/article/000/887/227/169373924861096.png" alt="PHP 基础知识:PHP 编程简介" /></p> <p>哎呀!我们不能这样。虽然现代社会表明一个人在被证明有罪之前是无辜的,但对于编程世界来说却并非如此。所有用户输入在经过净化之前都是有罪的!这是一个更新的示例,它执行此操作:</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">&amp;lt;?php if (isset($_GET['person'])) { $person = $_GET['person']; } else { $person = 'Joe'; } echo 'Hello, ' . htmlspecialchars($person, ENT_QUOTES); </pre><div class="contentsignin">로그인 후 복사</div></div> <p>通过此修改,如果有人尝试 XSS 攻击,我们将做好准备! <code>htmlspecialchars</code> 是一个本机 PHP 函数,可将各种符号转换为其实体对应部分。 <code>&amp;</code> 变为 <code>&amp;</code>、<code><</code> 变为 <code><</code> 等。这使其成为提供额外安全性的完美工具。 <code><script></code> 如果在执行前转换为 <code><script></code> 则没有任何意义。用户将简单地看到:</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">Hello, &amp;lt;script&amp;gt;alert('ATTACK!')&amp;lt;/script&amp;gt; </pre><div class="contentsignin">로그인 후 복사</div></div> <p>太棒了;没有造成任何伤害!</p> <hr> <h2>函数</h2> <p>虽然 PHP 附带了大量本机函数,但有时您肯定需要自己的函数。幸运的是,编写它们很容易。</p> <blockquote> <p>将函数视为可重用的逻辑片段,可以将其抽象出来,以便可以使用可读的名称来识别和调用它。</p> </blockquote> <p>也许您经营一家夜总会(如果您正在阅读本文,则不太可能!),并且需要一种简单的方法来接受一个人的出生日期,并计算他或她是否至少有 21 岁。自定义函数将是完成此任务的绝佳方法。</p> <p>第一步是定义一个新函数,名为 <code>isAdult</code>。函数可以接受外部输入,然后可以对其进行操作。这允许函数返回的数据是动态的。在这种情况下,要确定一个人是否是成年人,我们需要知道他们的出生年份。最后一步是返回 <code>true</code> 或 <code>false</code>,具体取决于当前年份减去该人的出生日期是否至少为二十一。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">function isAdult($yob) { $currentYear = 2013; return $currentYear - $yob &amp;gt;= 21; } </pre><div class="contentsignin">로그인 후 복사</div></div> <p>其实很简单!现在,我们只需要将其传递给保镖即可。可以通过引用其名称并后跟一组括号来触发或调用函数:<code>isAdult()</code>。但是,如果函数需要参数,那么您可以在这些括号内指定它,如下所示:</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">if (isAdult(1985)) { echo 'Come on in!'; } else { echo 'Please leave now, before I call your mother.'; } </pre><div class="contentsignin">로그인 후 복사</div></div> <p>这个 <code>isAdult</code> 函数有一个明显的问题。当前年份已被硬编码。当然,它会在整个 2013 年有效,但明年呢?看来这个值也需要是动态的。 PHP提供了一个<code>date</code>函数,可以用来计算当前年份。因此,该功能可能会更新为:</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">function isAdult($yob) { $currentYear = date('Y'); return $currentYear - $yob &amp;gt;= 21; } </pre><div class="contentsignin">로그인 후 복사</div></div> <hr> <h2>数组</h2> <p>几个月过去了,现在夜总会的生意比以往任何时候都好。事实上,它做得太好了,以至于保镖无法跟上。如果他可以一次筛选一组人,他的工作可能会更容易。</p> <p>将数组视为相关数据的容器。您甚至可以将其称为列表:推文列表、一组家庭成员、一组出生日期。</p> <p>最新版本的 PHP (5.4) 中的数组可以使用括号内的逗号分隔列表来定义,如下所示:</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">$group = [1985, 1990, 1992, 1997]; </pre><div class="contentsignin">로그인 후 복사</div></div> <p>这个单个 <code>$group</code> 变量现在包含多个出生日期。可以通过指定索引来访问其中的值,例如 <code>$group[0]</code>。数组就是我们所说的从零开始的数组。在翻译中,这意味着数组中的第一项或键的索引为零。因此,要访问 1992 年的值,您可以引用 <code>$group[2]</code>。</p> <p>现在,保镖可以快速过滤这些出生日期,并计算是否允许该人进入或拒绝他们。 <code>foreach</code> 语句可用于此类过滤。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">$group = [1985, 1990, 1992, 1997]; foreach($group as $yob) { if (isAdult($yob)) { echo 'Come on in!'; } else { echo 'Please leave now, before I call your mother.'; } } </pre><div class="contentsignin">로그인 후 복사</div></div> <p>注意保镖如何声明 <code>group</code> 中的出生年份 <code>foreach</code> 人应包含在变量 <code>$yob</code> 中。接下来,正如他之前所做的那样,他将该值传递给 <code>isAdult</code> 函数,并相应地继续。</p> <p>不过,当保镖无法确定此人的出生年份和姓名之间的联系时,他可能会感到困惑。 PHP 还允许关联数组,它提供了将给定值与键关联起来所需的功能。这是一个例子:</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">$group = [ 'John' =&amp;gt; 1985, 'Susan' =&amp;gt; 1990, 'Joe' =&amp;gt; 1992, 'Sara' =&amp;gt; 1997 ]; </pre><div class="contentsignin">로그인 후 복사</div></div> <p>这样更好。作为额外的好处,保镖现在知道了这个人的名字,可以对这个人更加友好一点。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">$group = [ 'John' =&amp;gt; 1985, 'Susan' =&amp;gt; 1990, 'Joe' =&amp;gt; 1992, 'Sara' =&amp;gt; 1997 ]; foreach($group as $name => $yob) { if (isAdult($yob)) { echo "Come on in, $name!"; } else { echo "Please leave now, $name, before I call your mother."; } } </pre><div class="contentsignin">로그인 후 복사</div></div> <blockquote> <p>在双引号内存储字符串时,您可以嵌套变量而不是使用连接。这可以提供更具可读性的语法。</p> </blockquote> <hr> <h2>课程</h2> <p>面向对象的编程远远超出了本教程的范围,但是,类仍然值得一提。现在,将它们视为相关属性和方法的简单容器。例如,代表单个人的类可能如下所示:</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">class Person { public $name; public $age; public function __construct($name, $age) { $this-&amp;gt;name = $name; $this-&amp;gt;age = $age; } } </pre><div class="contentsignin">로그인 후 복사</div></div> <p>注意到 <code>__construct()</code> 方法了吗?这被称为魔术方法,实例化后会立即触发。当此方法触发时,它将接受名称和年龄,然后将其附加到对象。</p> <p>要使用此类,请尝试:</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">$me = new Person('Jeffrey', 28); </pre><div class="contentsignin">로그인 후 복사</div></div> <p>这将创建 <code>Person</code> 类的新实例。该实例存储在 <code>$me</code> 变量中,可以称为对象。现在,没有什么可以阻止您创建此类的多个实例 - 事实上,在现实世界的项目中,您会这样做!该类只是一个蓝图。</p> <p>但此时,该类还没有太大用处。让我们添加一个方法或函数来指定一个人的配偶。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">class Person { public $name; public $age; public $spouse; public function __construct($name, $age) { $this-&amp;gt;name = $name; $this-&amp;gt;age = $age; } public function marry(Person $spouse) { $this-&amp;gt;spouse = $spouse; } } $me = new Person('Jeff', 28); $her = new Person('Allison', 28); $me-&amp;gt;marry($her); </pre><div class="contentsignin">로그인 후 복사</div></div> <p>此修改后的代码现在包含一个 <code>marry()</code> 方法,该方法将更新对象上的 <code>$spouse</code> 属性。现在,两个人之间有了直接联系。</p> <blockquote> <p>如果方法参数前面有一个类名(<code>Person $spouse</code>),称为类型提示,则表明该参数必须是给定类的实例,否则将引发错误。</ p> </blockquote> <p>要获取我配偶的名字,您可以这样写:</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">echo $me-&amp;gt;spouse-&amp;gt;name; // Allison </pre><div class="contentsignin">로그인 후 복사</div></div> <p>面向对象编程的概念比这更深入,但现在保持简单。它有助于将类视为单数名词:推文、用户、客户或文件。</p> <p>对这种模式的真正欣赏只会随着时间的推移而出现。</p> <h3>动手实践</h3> <p>测试您新发现的技能。您如何在页面上为用户注册和显示推文?好吧,第一步可能是定义一个代表单个 <code>Tweet</code> 的类。此类应存储推文正文的属性及其发布日期。此外,还应确保推文正文不超过 140 个字符。这是此类课程的第一次尝试:</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">class Tweet { public $body; public $pubDate; public function __construct($body) { $this-&amp;gt;setBody($body); $this-&amp;gt;setPubDate(new DateTime); } public function setBody($body) { if (strlen($body) &amp;gt; 140) { throw new InvalidArgumentException; } $this-&amp;gt;body = $body; } public function setPubDate(DateTime $date) { $this-&amp;gt;pubDate = $date-&amp;gt;format('Y/m/d H:i:s'); } } </pre><div class="contentsignin">로그인 후 복사</div></div> <p>虽然一开始看起来可能令人不知所措,但请稍微研究一下这段代码,并尝试了解每一步发生的情况。您可能会发现它非常可读!</p> <p>一个有趣的新功能源于 <code>setBody</code> 方法。如果提供的文本超过 140 个字符(我们可以使用 PHP 的 <code>strlen</code> 函数计算),那么我们应该对此表示反对,因为它违反了推文的规则。可以使用语法 <code>throw new ExceptionType</code> 抛出异常。</p> <p>现在我们有了一个足够合适的推文容器,我们可以创建几条推文,将它们存储在一个数组中,然后最终使用 <code>foreach</code> 语句将它们呈现在页面上。</p > <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">$tweets = []; # add two new tweets to the array $tweets[] = new Tweet('Going to the store.'); $tweets[] = new Tweet('Back from the store!'); # Filter through, and display on page. foreach($tweets as $tweet) { echo &amp;quot;&amp;lt;h2&amp;gt;{$tweet-&amp;gt;body}&amp;lt;/h2&amp;gt;&amp;quot;; echo &amp;quot;&amp;lt;p&amp;gt;Posted on: {$tweet-&amp;gt;pubDate}&amp;lt;/p&amp;gt;&amp;quot;; } </pre><div class="contentsignin">로그인 후 복사</div></div> <p>在浏览器中查看输出后,您应该看到类似以下内容的内容:</p> <p><img src="https://img.php.cn/upload/article/000/887/227/169373924876164.png" alt="PHP 基础知识:PHP 编程简介" /></p> <p>很好,但是我们如何保存这些推文?</p> <hr> <h2>存储</h2> <p>到目前为止,您已经学习了基础知识:变量、条件、函数、数组、类。还有更多内容需要介绍,但您应该根据需要自行研究。学习的下一步就是坚持。例如,您如何保留所有推文的日志?不<em>记住</em>推文的推文服务是一个糟糕的服务!这就是数据库的想法发挥作用的时候。</p> <p>将数据库表视为 Excel 电子表格。它可以包含任意数量的字段,例如人员的姓名、年龄或邮寄地址。然而,PHP 本身并不提供这种存储。相反,最常见的选择是 MySQL,它是世界上最流行的开源数据库。</p> <blockquote> <p>安装 MySQL 不属于本教程的范围。相反,请参阅 Nettuts+ 上的本教程以获取完整的演练。</p> </blockquote> <p>下面是一个简化的示例,可帮助您开始从数据库表中安全地获取行。如果它看起来势不可挡,请不要担心。 MySQL 是您要学习的第二门新语言。 PHP 的 PDO API 以及查询语言本身需要时间学习。</p> <p>首先,您需要一种连接数据库的方法。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">function connect() { $conn = new PDO( 'mysql:host=localhost;dbname=DB_NAME', 'USERNAME', 'PASSWORD' ); $conn-&amp;gt;setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); return $conn; } </pre><div class="contentsignin">로그인 후 복사</div></div> <blockquote> <p>PDO 是 PHP 用于连接 MySQL 数据库的三个可用 API 之一。</p> </blockquote> <p>接下来,我们将添加一个辅助函数来从 tweets 表中获取所有记录。请密切注意 <code>query</code> 方法的参数 <code>SELECT * FROM tweets</code>。这是一种用于查询数据库的特殊语言。在本例中,我们使用 <code>*</code> 符号来引用所有行。因此,我们从表中选择所有行,名为 <code>tweets</code>。</p> <p>此函数准备查询,然后获取完整的结果集。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">function fetchTweets($conn) { $stmt = $conn-&amp;gt;query('SELECT * FROM tweets'); return $stmt-&amp;gt;fetchAll(PDO::FETCH_OBJ); } </pre><div class="contentsignin">로그인 후 복사</div></div> <p>现在,阶段设置完毕,我们只需要相应地调用函数即可。</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;"># Connect to the DB $conn = connect(); # Fetch all rows from attendees table var_dump(fetchTweets($conn)); </pre><div class="contentsignin">로그인 후 복사</div></div> <p>转储变量内容的一个简单方法是使用 <code>var_dump</code> 函数。如果将 <code>fetchTweets($conn)</code> 的输出传递给此函数,在浏览器中查看它时,您将看到类似以下内容的内容:</p> <p><img src="https://img.php.cn/upload/article/000/887/227/169373924910979.jpg" alt="PHP 基础知识:PHP 编程简介" /></p> <p><code>var_dump</code> 对于调试很有帮助,但出于生产目的,最好过滤结果,并将它们正确呈现在页面上。您已经熟悉的 <code>foreach</code> 语句将很好地处理这项工作!</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbal:false;">$tweets = fetchTweets($conn); foreach($tweets as $tweet) { echo &amp;quot;&amp;lt;h2&amp;gt;{$tweet-&amp;gt;body}&amp;lt;/h2&amp;gt;&amp;quot;; echo &amp;quot;&amp;lt;p&amp;gt;{$tweet-&amp;gt;pubDate}&amp;lt;/p&amp;gt;&amp;quot;; } </pre><div class="contentsignin">로그인 후 복사</div></div> <hr> <h2>结论</h2> <p>与任何技能一样,编写流利的 PHP 只需要您的时间。可能需要数百个小时才能完全理解,但这没关系。这很有趣,对吧?应该是这样!</p> <p>最好的学习方法就是实践。构建废弃的项目,就像它们已经过时一样!本教程中概述的技术将带您完成第一阶段,但是,随着您技能的进步,您肯定会继续学习更高级的主题,例如 PHP 框架、设计模式和测试驱动开发。玩得开心!</p> <h3>建议的 Tuts+ 优质资源</h3> <ul> <li> 现代 PHP 开发人员 </li> <li> PHP 基础知识 </li> <li> SQL 要点<p> </p> </li> </ul> </div>

위 내용은 PHP 기초: PHP 프로그래밍 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿