标签 PHP 下的文章

PHP 8 发布首个 Alpha 版本

PHP 8 将于今年 11 月 26 日发布,而原定于 6 月 18 日发布的第一个 Alpha 版本跳票到了今天发布。PHP 8 是一个新的主要版本,它引入了一些重大变更:JIT 即时编译;联合类型;注解;弱映射等。

来源:开源中国

拍一拍:PHP 自从跳到 PHP 7 以后,各种性能和先进特性就发展的很快,和之前的 PHP 5.x 时代已经不可同日而语了。

APU 能效 6 年提升 31.7 倍

2014 年 6 月,AMD 提出了一个所谓的“25X20”目标 —— 到 2020 年的时候,APU 处理器的能效(性能功耗比)将会提高 25 倍!根据 AMD 给出的数据,以 2014 年初发布的 Kaveri APU 为基准,今年最新的 Renoir APU 的能效比已经是其 31.77 倍,远超当初设定的 25 倍目标!

来源:快科技

拍一拍:AMD 现在的发展也很不错啊!

高盛发布了一套免费新字体,但你不能用它来批评高盛

投资银行高盛发布了自己的字体:一套被称为 Goldman Sans的无衬线字体。Twitter 用户 Matt Round 发现在他们的许可证中规定:你可以自由地使用 Goldman Sans 来做任何你喜欢的事情,只要你不使用它来批评高盛。只要下载字体包,就等同于同意这些条款和条件,而且虽然 Goldman San 名义上是免费字体,但高盛保留了对授权的完全控制权,允许它以任何理由终止使用。

来源:cnBeta.COM

拍一拍:果然是银行家暗搓搓的习惯。

我在 Mac 上编写 WordPress 插件,这些是我的工具列表。

根据 2020 年 Stack Overflow 开发者调查报告,在 Mac 上工作的编码者(27.5%)比在 Linux 上工作的编码者(26.6%)要多一点。相比之下,使用 Windows 作为开发机器的开发者数量几乎是其两倍(45.8%)。多年来,我在不同的平台之间跳来跳去,但我发现自己经常回到 Mac 上。

事实上,我从 Mac 专用的应用程序中获得了很多生产力,尤其是用于视频制作的 Final Cut Pro X。我喜欢能够在同一台机器上运行 Windows、Linux 和 Mac 应用程序,而这只有在 Mac 上才能实现(我将在下文中详谈)。虽然 Windows 也提供了一个强大的命令行环境,但我喜欢拥有一个完全是 Linux 风格的命令行,并且 Mac 上集成良好的图形工具对其进行了完整补充。

在本文中,我将向你展示我使用的工具。许多是跨平台的,而另一些是 Mac 专用的。虽然我过去曾开发过 Mac 应用和 iOS 应用,但我现在的开发工作完全是针对 Web 的。我维护了 10 个开源的 WordPress 插件,包括一个支持了 10000 多个非营利组织的捐款插件和一个支持了 20000 多个网站的网站隐私插件。

虽然我过去用过很多编程语言(也写过自己的编程语言),但我目前的项目主要涉及 PHP 和 JavaScript,并擅长 CSS、HTML 和 SQL(及一些框架)。为了创建和维护这些代码,我使用了下面所示的各种工具。在本篇中,我将向你展示我安装的工具。在以后的文章中,我将向你展示和深入介绍有助于完成工作的云服务。

就这样,让我们开始吧。

集成开发环境:PhpStorm

关于代码编辑和开发环境的话题,引发的宗教式的争论我都数不清了。有些程序员坚持走老路,只依靠命令行和 vi、emacs 等编辑器。有些程序员喜欢轻量级的文本编辑器,有些则喜欢可扩展性更强的编辑器,比如 vi 和 emacs。其他人则喜欢更加可扩展的编辑器,比如 Atom 和 Sublime Text。还有一些编码者,包括我自己,喜欢完整的集成开发环境,比如 PhpStorm、Visual Studio Code 和 Xcode(主要是它的 Mac 和 iOS 原生开发工具)。

我选择的武器一直是 PhpStorm。我已经使用它多年了。它有一个优秀的集成调试环境,可以进行本地和远程调试。它还集成了我日常使用的各种功能,从它自带的终端窗口到文件同步,再到版本控制和逐行文件历史记录。另外,它还有丰富的插件可供选择,可以扩展和提升编码体验。

我最喜欢的一些插件包括:

  • Rainbow Brackets(彩虹括号):一个很棒的插件,它不仅能用行匹配括号,还能用颜色来匹配。它可以非常容易地看到哪些代码属于哪里。
  • String Manipulation(字符串操作):各种各样的字符串操作、大小写转换等等。
  • WordPress:语法格式化和 WordPress 式的函数格式化,以及对 WordPress 挂钩的支持。对于任何一个 WordPress 插件的编码者来说都是必备的。

本地环境:Local

在做 Web 开发时,通常最好有一个本地开发栈。Local 就是这样一个栈。它提供了 Nginx 或 Apache、MySQL、带有 Xdebug 的 PHP 安装包,以及其他一些资源,最重要的是它带有一个隧道,这样基于互联网的资源就可以访问本地环境进行编码和测试,内置了 SSL 集成,以及 MailHog —— 它可以拦截电子邮件,用于基于电子邮件的应用测试。哦,而且是免费的。

快速编辑:Sublime Text

我之前就提到过 Sublime Text,很多编码者都把它作为主要的开发环境。它几乎支持一系列传说中的插件和附加组件。当我想在 PhpStorm 固有的项目结构之外编辑项目文件时,我使用 Sublime Text 作为一个快速编辑器。它的速度快,反应灵敏,而且相当有特点。

提交文件到仓库:SmartSVN

WordPress 插件库(所有通过的插件都在这里提供给 WordPress 用户)不使用 Git 或 Github,而是使用 SVN 源码控制系统。我觉得 SVN 的命令行很烦人,所以我使用一个叫做 SmartSVN 的图形化用户界面来将我的文件发送到仓库中。它大大降低了我在发布新版本时出错的几率。

潇洒的命令行:iTerm2

虽然在我的开发工具箱中,我更喜欢使用 GUI 界面来实现大部分功能,但我并不害怕在适当的时候使用命令行。虽然只使用标准的 MacOS 终端也是可以的,但我更喜欢 iTerm2。它提供了分屏、命令补全、粘贴历史等功能。它还可以根据你的心情和项目进行配置。

节省点击的每一秒:Shortcut Bar

这款 Mac App Store 的小宝贝是一款方便的工具,可以捕捉快速项目,并从 Mac 的菜单栏访问它们。我最大的用途是为我正在开发的各种网站创建管理页面和用户页面的快捷方式。与其切换到浏览器窗口,然后调用书签,我只需进入菜单,选择我要去的地方,就会打开浏览器。

这似乎是一个小功能,但当每天在 IDE 和浏览器之间切换数千次时,这些节省下来的鼠标动作确实不少。因为快捷栏允许分组,所以我还将本地和远程服务器测试位置的链接进行了分组。

Mac 上的 Windows 和 Linux:Parallels Desktop

因为我是做 Web 开发的,我必须在基于 Windows 的浏览器上检查我的代码,这意味着我需要启动 Windows 10 来测试新的 Edge、Chrome、Firefox 和 —— 请原谅我,还有 IE11。是的,还有用 IE11 的用户。

我在本文的介绍中提到了 Parallels Desktop。我发现在同一台机器上运行 Windows、Mac 和 Linux 的能力在某些情况下是非常有用的。也就是说,我一直在楼上办公室的 Mac 上运行 Windows,它是我的速度和容量最大的一台机器。那台机器也是我用于视频制作的机器。

我的主要开发机器其实是在楼下,就在沙发旁边。这要追溯到我的狗狗还小的时候,我在办公室工作的时候,它经常会觉得孤独和害怕。现在,我在工作时,它趴在我的腿上是相当愉快的,我已经建立了一个完整的工作站,可以让我坐在客厅里,与键盘和狗共享我的膝盖。

那台机器是一台 2013 年的 i7 iMac,内存 32GB。它是开发的理想之选,但它的速度实在不够快,无法满足多个 4K 视频流的需求。也不足以快到真正成功地托管 Windows 桌面。这让我想到了……

连接到远程机器:屏幕共享和微软远程桌面

尽管我的开发机器在楼下,而我的视频制作机器在楼上,但无论我在哪里,我都可以在其中任何一台机器上工作。我只需使用 MacOS 内置的“屏幕共享”应用来连接到远程机器。

当我想从楼下的开发机器连接到 Windows 时,我使用“微软远程访问”。这是从 Mac OS 应用商店免费下载的,它提供了一个进入我的 Windows 10 机器的完整的远程界面。请注意,如果你打算使用“微软远程访问”,你需要运行 Windows 10 Pro。Windows Home 不支持远程访问。

哦,如果你想知道为什么这套环境似乎没有一个用于移动环境中,在咖啡店编程的组件,这很简单:如今的大流行病。一旦明确我所有的编码工作都将在家里完成,我就把我的开发工作整合到一台容量不错的固定机器上,并针对机器之间的千兆以太网进行了优化。如果我们还生活在之前的“旧常态”中,我就会有一个更以云为中心的实现。我很怀念咖啡店。

管理 MySQL 数据的整洁界面:Sequel Pro

我的代码要做大量的 SQL 操作。因此,我需要能够查看已经存储到数据库中的内容。对我来说,最简单、最快速的方法不是 PhpMyAdmin,而是一个叫 Sequel Pro 的 Mac 本地应用(很奇妙,它的图标上把煎饼和数据存储混为一体)。

我最常用的方式是打开一个数据库表,搜索 “value contains” 或 “option\_name contains”,然后查找结果。它的速度很快,并且允许我在开发过程中对数据进行操作。我应该指出,PhpStorm 也有一个数据库浏览器,但我发现 Sequel Pro 对我来说更有效率。

一个不太复杂的 SFTP 客户端:Forklift

我花了很长时间才改掉了通过命令行和 SSH 隧道使用 SFTP 的习惯。而 Forklift 是一个很好的替代品。它保留了一个网站和登录信息的列表,支持加密,并提供了一个传统的拖放界面来批量移动文件。

强大的应用自动化:Keyboard Maestro

与 Final Cut Pro X 一样,Keyboard Maestro 是让我继续使用 Mac 的专用软件工具之一。我在 2011 年首次购买了 Keyboard Maestro,此后我一直使用它来制作各种专业脚本。

它是一个非常强大的跨应用脚本工具,也非常容易使用。我经常写一些特殊用途的脚本来运行一个原本需要很长时间的任务。我的一些脚本是非常强大的,可以跨多个应用程序。其他的脚本,比如截图中的 Stripe 填充测试,只做一件事,一遍又一遍。

我们来谈谈这个问题。在为我的捐赠插件开发 Stripe 支付网关时,我必须发起测试支付,大概有上千次。在我编码、测试和调试的过程中,我不得不用相同的测试数据填写相同的信用卡字段,一遍又一遍。Keyboard Maestro 中的一个简单的脚本为我完成了所有这些工作。我不需要为每一次测试手工填写数据,而是让 Keyboard Maestro 帮我完成。

特定用途的快速搜索:Alfred

Alfred 是我的生产力家族的新成员。它会弹出一个命令栏,有点像 Spotlight,但增加了功能。你可以创建工作流来完成相对复杂的任务,但到目前为止,我的主要用处是四个自定义搜索。当我按下 Alt-Space 时,就会弹出 Alfred 的输入栏。

如果我键入 “codex”,它就会把后面的任何内容作为搜索字符串来在 WordPress 开发者文档站 codex 上搜索。输入 “plugin”,会搜索 WordPress 插件库。输入 “zdme”,会搜索 ZDNet 中我写过的带有要搜索的字符串的文章。我经常使用这个方法在文章中放置链接。现在,这些可能看起来很简单,你可以设置 Chrome 浏览器来进行自定义搜索,但同样,与快捷栏一样,这可以节省鼠标移动和按键。如果我需要查看 WordPress 函数的定义,只需轻点一下按键,就能得到它,而不需要动用鼠标。

你觉得怎么样?

那么,你看到了,这些是我的主要开发工具,可以帮助我完成工作。那你呢?你是编程人员吗?如果是的话,什么软件工具能帮助你提高工作效率?请在下面的评论中告诉我们。


via: https://www.zdnet.com/article/one-developers-favorite-mac-coding-tools-for-php-and-web-development/

作者:David Gewirtz 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Fanx 语言 3.2 发布,全面支持中文编程

Fanx 是面向对象的函数式的编程语言。不同于其他语言的 Unicode 支持,Fanx 不仅标识符能用汉字,关键字也能用汉字。中文是可选方式。是在编译器上做的别名处理。项目主页: http://fanx.info

来源:开源中国

硬核老王点评:对于使用中文来编程,仁者见仁智者见智,不过,著名的易语言沦为恶意软件生产工具的情形值得注意和研究。

Linux 内核 4.19 和 5.4 生命周期延长至 6 年

Greg Kroah-Hartman 宣布将 Linux 内核 4.19 和 5.4 版本的生命周期终止(EOL)支持从两年延长到六年,分别延长至 2024 和 2025 年。Linux 内核主要分为稳定版和长期支持版。稳定版本每 8-10 周发布一次;长期版本则是每两年一次,并会在接下来的两年内提供安全和错误修复。2017 年,谷歌高级工程师 Iliyan Malchev 曾宣布,Linux 内核团队同意将部分 Linux 的长期支持版(LTS)维护期从两年延长到六年。目前,有 6 个受支持为六年的 LTS 内核,分别是:5.4、4.19、4.14、4.9、4.4 和 3.6 版本。

来源:开源中国

硬核老王点评:你现在用的哪个内核?是 LTS 的么?

Phoronix 发布 PHP 8 性能基准测试

由于 PHP 8 Alpha1 大约要到 6 月中旬才发布,所以 Phoronix 从 PHP 8 最新的 Git 代码(截至5月底)构建了用于测试的版本。如果 PHP 8 启用了 JIT,性能改进可以说是非常明显,比 PHP 7.4 stable 提升了 92%。至于更旧的版本,PHP 8 with JIT 的性能是 PHP 5.4 的 5 倍。从数据来看,PHP 8.0 是一个相当值得期待的版本,无论是性能方面的提升还是语言特性的增加。

来源:开源中国

硬核老王点评:看来非常值得关注啊。不过,PHP 也越来越和之前的样子不一样了。

DDoS 租用服务 vDOS 两位创始人被判处 6 个月社区服务

DDoS 租用服务 vDOS 目前已经停止运行,在过去四年中帮助付费客户发起了超过 200 万次分布式拒绝服务(DDoS)攻击,让无数互联网用户和网站陷入离线状态。两人均为以色列公民,在 2016 年被捕的时候年仅 18 岁。两名被告在运营 vDOS 服务期间非法所得超过 60 万美元。

来源:cnBeta.COM

硬核老王点评:这个处罚感觉很温柔。

Codeigniter 是一个 PHP 框架,可以使公司进行开发具有灵活性和便捷性的高性能网站。

PHP Codeigniter 是一个开源框架,为商业应用提供易于使用的 PHP 编程语言和强大的编码工具。它还提供商务智能、服务器监视、开发和应用集成功能。这是一个相对冷清的项目,你很少听到它,但它功能强大,许多刚接触的开发人员都对此感到惊讶和耳目一新。

我在新加坡的一家在线学习服务提供商处使用 Codeigniter。我们提供的服务并不算常见,没有可以作为模板的默认功能集或现有后台管理系统,所以我需要一个能提供良好的、可靠的、可以建立在此基础上的原始材料。最初,我考虑用其他平台(如 Wordpress)用于我们的网站。但是,我决定使用 Codeigniter,因为它的灵活性,以及集成了在我们的补课匹配过程中需要的功能。

以下是打动我使用 Codeigniter 的原因:

  • 与 MySQL 数据库的集成 —— 主要功能是允许客户端浏览导师的数据库并添加导师,例如类似于电子商务平台的“购物车”。
  • 客户端界面系统 —— 用户可以登录来管理偏好并编辑详细信息,修改所教的科目、旅游的地区、手机号码、地址等。
  • 定制的管理员面板 —— 管理员可以使用定制的管理面板访问客户提交的资料,它与客户服务功能集成在一起,因此管理员可以单独跟进。
  • 付款系统 —— 管理面板带有与 Paypal 集成的发票和付款网关。
  • CMS 编辑器界面 —— 管理员能够编辑博客和文章中的文本和图像,以及添加新页面。

该项目花费了大约六个月的时间来完成,另外花了两个月的调试时间。如果我需要从头开始构建所有,或者尝试重新设计现有的框架以满足我们的需求,那将花费更长的时间,而且可能最终无法满足客户需求。

功能和优点

PHP Codeigniter还有很多吸引开发者的功能,包括错误处理和代码格式化,这些功能在各种编码情景下都非常有用。它支持模板,可用于向现有网站添加功能或生成新网站。有许多基于 web 系统商业需要的功能,包括使用自定义标签。即使没有编程经验的普通开发人员也可以使用大多数工具。

Codeigniter 的主要功能是:

  • XML 核心服务,
  • HTTP/FTP 核心服务
  • AppData 和 PHP 沙箱功能
  • XSLT 和 HTML 模板
  • 加密的信息传输
  • PCM Codeigniter 服务器监控
  • 应用集成
  • 文件传输协议(FTP)
  • 服务台支持
  • Apache POI(用于托管网站的内容管理基础架构)

兼容性

Codeigniter 与许多领先的软件程序兼容,例如 PHP、MySQL、MariaDBphpMyAdminApache、OpenBSD、XSLT、SQLite 等。许多公司更喜欢使用 Codeigniter 产品来满足网站要求,因为它们易于使用和集成。如果你不想创建自己的网站,你可以找到许多提供自定义 Web 开发服务的开发人员和设计机构。

安全

Codeigniter 还通过 SSL 加密提供数据安全性。加密可以保护数据免受入侵者和防火墙外部威胁的侵害。数据存储功能还允许对公司网站进行安全审核。

其它功能

一家优秀的 PHP Web 开发公司会使用几种高级技术和第三方技术,例如 XML 和 PHP。它为企业提供了一个完整的平台,可以开发出具有看起来专业的、好用的商业网站。Codeigniter 使得第三方技术的使用变得容易,并可以与常见的 Web 开发软件一起使用。这使得 Web 公司可以轻松地使用所选模块创建网站。大多数 PHP 开发者也为个人提供支持和培训服务。

使用 PHP 框架 Codeigniter

Codeigniter 给企业提供了完整的 PHP 开发包,它将提供强大的功能、灵活性和性能完美结合在一起。到目前为止,我很满意我们的网站,并不断地升级和添加新的功能。并不断升级和增加新的功能。我期待着发现我们的网站还能用 Codeigniter 做些什么。你也是这样么?


via: https://opensource.com/article/20/5/codeigniter

作者:Wee Ben Sen 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Eclipse 是由 Eclipse 基金会开发的功能全面的自由开源 IDE。它诞生于 2001 年。你可以在此 IDE 中编写各种程序,从 C/C++ 和 Java 到 PHP,乃至于 Python、HTML、JavaScript、Kotlin 等等。

安装

该软件可从 Fedora 的官方仓库中获得。要安装它,请用:

sudo dnf install eclipse

这将安装基本的 IDE 和 Eclipse 平台,能让你开发 Java 应用。为了将 PHP 开发支持添加到 IDE,请运行以下命令:

sudo dnf install eclipse-pdt

这将安装 PHP 开发工具,如 PHP 项目向导、PHP 服务器配置,composer 支持等。

功能

该 IDE 有许多使 PHP 开发更加容易的功能。例如,它有全面的项目向导(你可以在其中为新项目配置许多选项)。它还有如 composer 支持、调试支持、浏览器、终端等内置功能。

示例项目

现在已经安装了 IDE,让我们创建一个简单的 PHP 项目。进入 “File →New → Project”。在出现的对话框中,选择 “PHP project”。输入项目的名称。你可能还需要更改其他一些选项,例如更改项目的默认位置,启用 JavaScript 以及更改 PHP 版本。请看以下截图。

Create A New PHP Project in Eclipse

你可以单击 “Finish” 按钮创建项目,或按 “Next” 配置其他选项,例如添加包含和构建路径。在大多数情况下,你无需更改这些设置。

创建项目后,右键单击项目文件夹,然后选择 “New→PHP File” 将新的 PHP 文件添加到项目。在本教程中,我将其命名为 index.php,这是每个 PHP 项目中公认的默认文件。

add a new PHP file

接着在新文件中添加代码。

Demo PHP code

在上面的例子中,我在同一页面上使用了 CSS、JavaScript 和 PHP 标记,主要是为了展示 IDE 能够支持所有这些标记。

页面完成后,你可以将文件移至 Web 服务器文档根目录或在项目目录中创建一个 PHP 开发服务器来查看输出。

借助 Eclipse 中的内置终端,我们可以直接在 IDE 中启动 PHP 开发服务器。只需单击工具栏上的终端图标,然后单击 “OK”。在新终端中,进入项目目录,然后运行以下命令:

php -S localhost:8080 -t . index.php

Terminal output

现在,打开浏览器并进入 http://localhost:8080。如果按照说明正确完成了所有操作,并且代码没有错误,那么你将在浏览器中看到 PHP 脚本的输出。

PHP output in Fedora


via: https://fedoramagazine.org/php-development-on-fedora-with-eclipse/

作者:Mehdi Haghgoo 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

大约 80% 的 Web 应用程序由 PHP 提供支持。类似地,SQL 也是如此。PHP 5.5 版本之前,我们有用于访问 MySQL 数据库的 mysql\_ 命令,但由于安全性不足,它们最终被弃用。

弃用这件事是发生在 2013 年的 PHP 5.5 上,我写这篇文章的时间是 2018 年,PHP 版本为 7.2。mysql\_ 的弃用带来了访问数据库的两种主要方法:mysqli 和 PDO 库。

虽然 mysqli 库是官方指定的,但由于 mysqli 只能支持 mysql 数据库,而 PDO 可以支持 12 种不同类型的数据库驱动程序,因此 PDO 获得了更多的赞誉。此外,PDO 还有其它一些特性,使其成为大多数开发人员的更好选择。你可以在下表中看到一些特性比较:

PDOMySQLi
数据库支持12 种驱动只有 MySQL
范例OOP过程 + OOP
预处理语句(客户端侧)YesNo
1命名参数YesNo

现在我想对于大多数开发人员来说,PDO 是首选的原因已经很清楚了。所以让我们深入研究它,并希望在本文中尽量涵盖关于 PDO 你需要的了解的。

连接

第一步是连接到数据库,由于 PDO 是完全面向对象的,所以我们将使用 PDO 类的实例。

我们要做的第一件事是定义主机、数据库名称、用户名、密码和数据库字符集。

$host = 'localhost';
$db   = 'theitstuff';
$user = 'root';
$pass = 'root';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$conn = new PDO($dsn, $user, $pass);

之后,正如你在上面的代码中看到的,我们创建了 DSN 变量,DSN 变量只是一个保存数据库信息的变量。对于一些在外部服务器上运行 MySQL 的人,你还可以通过提供一个 port=$port_number 来调整端口号。

最后,你可以创建一个 PDO 类的实例,我使用了 $conn 变量,并提供了 $dsn$user$pass 参数。如果你遵循这些步骤,你现在应该有一个名为 $conn 的对象,它是 PDO 连接类的一个实例。现在是时候进入数据库并运行一些查询。

一个简单的 SQL 查询

现在让我们运行一个简单的 SQL 查询。

$tis = $conn->query('SELECT name, age FROM students');
while ($row = $tis->fetch())
{
  echo $row['name']."\t";
  echo $row['age'];
  echo "<br>";
}

这是使用 PDO 运行查询的最简单形式。我们首先创建了一个名为 tis(TheITStuff 的缩写 )的变量,然后你可以看到我们使用了创建的 $conn 对象中的查询函数。

然后我们运行一个 while 循环并创建了一个 $row 变量来从 $tis 对象中获取内容,最后通过调用列名来显示每一行。

很简单,不是吗?现在让我们来看看预处理语句。

预处理语句

预处理语句是人们开始使用 PDO 的主要原因之一,因为它提供了可以阻止 SQL 注入的语句。

有两种基本方法可供使用,你可以使用位置参数或命名参数。

位置参数

让我们看一个使用位置参数的查询示例。

$tis = $conn->prepare("INSERT INTO STUDENTS(name, age) values(?, ?)");
$tis->bindValue(1,'mike');
$tis->bindValue(2,22);
$tis->execute();

在上面的例子中,我们放置了两个问号,然后使用 bindValue() 函数将值映射到查询中。这些值绑定到语句问号中的位置。

我还可以使用变量而不是直接提供值,通过使用 bindParam() 函数相同例子如下:

$name='Rishabh'; $age=20;
$tis = $conn->prepare("INSERT INTO STUDENTS(name, age) values(?, ?)");
$tis->bindParam(1,$name);
$tis->bindParam(2,$age);
$tis->execute();

命名参数

命名参数也是预处理语句,它将值/变量映射到查询中的命名位置。由于没有位置绑定,因此在多次使用相同变量的查询中非常有效。

$name='Rishabh'; $age=20;
$tis = $conn->prepare("INSERT INTO STUDENTS(name, age) values(:name, :age)");
$tis->bindParam(':name', $name);
$tis->bindParam(':age', $age);
$tis->execute();

你可以注意到,唯一的变化是我使用 :name:age 作为占位符,然后将变量映射到它们。冒号在参数之前使用,让 PDO 知道该位置是一个变量,这非常重要。

你也可以类似地使用 bindValue() 来使用命名参数直接映射值。

获取数据

PDO 在获取数据时非常丰富,它实际上提供了许多格式来从数据库中获取数据。

你可以使用 PDO::FETCH_ASSOC 来获取关联数组,PDO::FETCH_NUM 来获取数字数组,使用 PDO::FETCH_OBJ 来获取对象数组。

$tis = $conn->prepare("SELECT * FROM STUDENTS");
$tis->execute();
$result = $tis->fetchAll(PDO::FETCH_ASSOC);

你可以看到我使用了 fetchAll,因为我想要所有匹配的记录。如果只需要一行,你可以简单地使用 fetch

现在我们已经获取了数据,现在是时候循环它了,这非常简单。

foreach ($result as $lnu){
  echo $lnu['name'];
  echo $lnu['age']."<br>";
}

你可以看到,因为我请求了关联数组,所以我正在按名称访问各个成员。

虽然在定义希望如何传输递数据方面没有要求,但在定义 $conn 变量本身时,实际上可以将其设置为默认值。

你需要做的就是创建一个 $options 数组,你可以在其中放入所有默认配置,只需在 $conn 变量中传递数组即可。

$options = [
  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
$conn = new PDO($dsn, $user, $pass, $options);

这是一个非常简短和快速的 PDO 介绍,我们很快就会制作一个高级教程。如果你在理解本教程的任何部分时遇到任何困难,请在评论部分告诉我,我会在那你为你解答。


via: http://www.theitstuff.com/easiest-pdo-tutorial-basics

作者:Rishabh Kandari 选题:lujun9972 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出