Php中使用Select 查询语句的实例

 更新时间:2016年11月25日 17:06  点击:1410
php中要查询mysql数据库中的内容我们必须先连接mysql数据库,然后再利用sql语句进行查询,下面我们来看一些例子吧。

sql有许多对数据库操作的语句。但是常见和比较需要的是这么几个语句 。SELECT 语句用于从数据库中选取数据。
 

那么我们先来介绍第一种 SELECT语句

语句1:SELECT *  FROM table_name

解说:意思就是读取整个表table_name里面的数据显示出来

语句1:SELECT * FROM table_name Where x = 1

解说:意思就是读取表table_name里面键名为:x 值为:1的 数据显示出来
 

Select 查询语句的例子

 代码如下 复制代码
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT * FROM Persons");
while($row = mysql_fetch_array($result))
  {
  echo $row['FirstName'] . " " . $row['LastName'];
  echo "<br />";
  }
mysql_close($con);
?>
 

例子

 代码如下 复制代码

<?php
define ('HOSTNAME', 'localhost'); //数据库主机名
define ('USERNAME', 'username'); //数据库用户名
define ('PASSWORD', 'password'); //数据库用户登录密码
define ('DATABASE_NAME', 'testdb'); //需要查询的数据库
$db = mysql_connect(HOSTNAME, USERNAME, PASSWORD) or
         die (mysql_error());
//连接不上,就会显示mysql出错的原因。
mysql_select_db(DATABASE_NAME);
//切换到testdb www.111cn.net
$query =
"SELECT uri,title FROM testdb WHERE 1 ORDER by rand() LIMIT 1";
//上面这句的意思是从testdb中随机提取一条数据。
$result = mysql_query($query);
//查询
while ($row = mysql_fetch_array($result)) { echo "<p id="title">" ,
($row['title']) , "</p><p id="uri">&ndash;" , nl2br($row['uri'])
, "</p>"; }
//显示结果
mysql_free_result($result);
//释放结果
mysql_close();
//关闭连接
?>

mysql中文数据出现乱码

数据库采用UTF8编码,而页面申明编码是GB2312,这是最常见的产生乱码的原因。这时候在PHP脚本里面直接SELECT数据出来的就是乱码,需要在查询前先使用:

 代码如下 复制代码

mysql_query("SET NAMES GBK");或mysql_query("SET NAMES GB2312");

来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码的话,可以用:

mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如页面申明的编码与数据库内部编码一致可以不设定连接编码。

代码如下:

 代码如下 复制代码

$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
mysql_query("SET NAMES 'GBK'");

保存数据到mysql数据库中我们需要使用update或insert来协助我们完成,下面我给学习php的朋友介绍几个应用例子,希望文章给你带来帮助。

我们先来介绍INSERT语句

语法1: INSERT INTO table_name VALUES ("1", "2")

解说: 就是插入插入2个值。第一个值为:1 第二个值为:2

 
语句2:INSERT INTO table_name (column1, column2)VALUES (value1, value2)

解说:就是根据指定的键!插入指定的值。在字段 column1 插件的值为:value1 ,然后再字段column2 插入的值为:value2

INSERT语句的列子

 代码如下 复制代码

<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("my_db", $con);

mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Peter', 'Griffin', '35')");

mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Glenn', 'Quagmire', '33')");

mysql_close($con);
?>

例子

 代码如下 复制代码

<?php  
 /* 
  * 资料保存 
  * 程序:刘兴 
  * 时间:2010-6 
  */ 
?>  
<!DOCTYPE html PUBLIC ”-//W3C//DTD XHTML 1.0 Transitional//EN” ”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>  
<html xmlns=”http://www.w3.org/1999/xhtml”>  
<?php   
  require_once(“gxpass.php”);//引入密码验证   
  require_once(“connDB.php”);//引入数据库连接参数    
  $zl=$_POST;  
 
//数据保存  
  list ($pid,$pname)=split(‘-’,$zl[people]);  
  $year=$zl[year];  
  $jd=$zl[jd];     
  foreach($zl as $key => $value){    
   if  (strstr($key,”fs”)) {  
   if (strstr($key,”kfs”)){  
          $khxm=substr($key,3,strlen($key)-3);  
    $fs=$zl[$key];  
    continue;             
   }   //www.111cn.nEt
   else{  
          $khxm=substr($key,2,strlen($key)-2);  
   }     
      $khfs=$value;   
   $khinfo=$zl[$khxm];        
          $sql=”delete from khzl where peopleid=’$pid’ and khbm=’$khxm’ and time=’$jd’ and year=’$year’”;  
    $result=mysql_query($sql) ;            
       $sql=”INSERT INTO khzl (peopleid ,khbm ,fenshu ,time ,year ,info,fs ) VALUES  (‘$pid’, ’$khxm’, $khfs, ’$jd’, ’$year’, ’$khinfo’,'$fs’)”;  
    $fs=0;  
   $result=mysql_query($sql);    
   }  
 }   
?>  
<head>  
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ />  
<title>数据保存</title>  
</head>  
<body>  
<?php   
 
//网址转向  
echo ”<script language=’javascript’>”;   
echo ” location=’peoplexz.php’;”;   
echo ”</script>”;  
?>  
</body>  
</html> 

一聚教程小编提醒你,保存数据时我们要注意页面之间的编码以免出现不必要的麻烦了,还有就是数据类型与我们提交的数据要一致否则数据是保存不成功的哦。

今天header(\"Location: $url\"),以往跳转总是可以的,今天却不动,只是输出结果。以往自己要确认检查,$url的值获取的是否正确,所以在前面加了echo $url;来调试用,结果就导致了header函数的无效。

在PHP中用header("location:test.php")进行跳转要注意以下几点:

1、location和“:”号间不能有空格,否则会出错。
2、在用header前不能有任何的输出,包括include的页面中标签“?>”后不能有空格!!
3、header后的PHP代码还会被执行。


PHP的 header 跳转之前不能有任何内容输出,因为PHP开始执行的时候就已经向浏览器送出HTTP头信息,之后就不再允许更改了.

但是如果必须要在输出之后再处理header信息的话可以使用 ob_start() ob_end_flush() 来缓存一下要发送的内容,等到header继续再发送内容.

或者一个更简单的办法,修改php.ini,找到 output_buffering=Off 修改为 output_buffering=4096

数据编码转换方法不能直接使用iconv函数来进行转换了,但我们可以利用iconv与var_export函数进行编码转换了,下面来看一个实例


用构建数组原型的序列化方法,借助var_export函数,最终函数如下:

 代码如下 复制代码

function array_iconv($in_charset,$out_charset,$arr){

return eval('return '.iconv($in_charset,$out_charset,var_export($arr,true).';'));

}

原理很简单 var_export设置第二个参数为true,返回数组原型字符串,将字符串转换为utf-8编码,之后再用eval来执行返回(类似匿名函数?),至此完美解决问题。

一聚教程小编还有一个想法,就是利用foreach遍历数组然后再利用iocnv函数起先一个个转换了,不过这样转换的是把数组值进行转换了。

今天没事来研究了一下在php中利用strlen计算字符串长度的一些实例了,但经过测试使用php自带的函数strlen在uft8与gbk编码时有很大的区别,下面我们一起来看看具体测试实例。


今晚在写框架的表单验证类时,需要判断某个字符串长度是否在指定区间内,很自然地,想到了PHP中的strlen函数。

 代码如下 复制代码


$str = 'Hello world!中';
echo strlen($str); // 输出12

测试一下中文

 代码如下 复制代码

$str = '你好,世界!';
echo strlen($str); // GBK或GB2312下输出12,UTF-8下输出18 www.111cn.net

PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得 到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在 UTF-8编码下,一个汉字占3个字节)。

 

下面这个实例摘自大名鼎鼎的WordPress,非常精确的哦,另外需要注意的是本函数仅适用于utf-8 编码下的字符串。

 代码如下 复制代码


function utf8_strlen($string=null){
    // 将字符串分解为单元
    preg_match_all("/./us", $string, $match);
    // 返回单元个数  
    return count($match[0]);
}


但以上代码在UTF-8编码下并不能处理GBK/GB2312的中文字符串,因为GBK/GB2312的中文字符会被识别为两个字符而计算出来的中文字符数量会翻倍,于是我想到了这么一个办法:

 代码如下 复制代码

    $tmp = @iconv('gbk', 'utf-8', $str);
    if(!empty($tmp)){
    $str = $tmp;
    }
    preg_match_all('/./us', $str, $match);
    echo count($match[0]);

可兼容GBK/GB2312及UTF-8编码,经小量数据测试通过,但暂未确定是否完全正确

 

[!--infotagslink--]

相关文章

  • Mybatis Plus select 实现只查询部分字段

    这篇文章主要介绍了Mybatis Plus select 实现只查询部分字段的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-01
  • 图解PHP使用Zend Guard 6.0加密方法教程

    有时为了网站安全和版权问题,会对自己写的php源码进行加密,在php加密技术上最常用的是zend公司的zend guard 加密软件,现在我们来图文讲解一下。 下面就简单说说如何...2016-11-25
  • ps怎么使用HSL面板

    ps软件是现在很多人都会使用到的,HSL面板在ps软件中又有着非常独特的作用。这次文章就给大家介绍下ps怎么使用HSL面板,还不知道使用方法的下面一起来看看。 &#8195;...2017-07-06
  • Plesk控制面板新手使用手册总结

    许多的朋友对于Plesk控制面板应用不是非常的了解特别是英文版的Plesk控制面板,在这里小编整理了一些关于Plesk控制面板常用的使用方案整理,具体如下。 本文基于Linu...2016-10-10
  • MyBatisPlus-QueryWrapper多条件查询及修改方式

    这篇文章主要介绍了MyBatisPlus-QueryWrapper多条件查询及修改方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2022-06-27
  • 使用insertAfter()方法在现有元素后添加一个新元素

    复制代码 代码如下: //在现有元素后添加一个新元素 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement){ parent.appendChild(newEl...2014-05-31
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • 使用percona-toolkit操作MySQL的实用命令小结

    1.pt-archiver 功能介绍: 将mysql数据库中表的记录归档到另外一个表或者文件 用法介绍: pt-archiver [OPTION...] --source DSN --where WHERE 这个工具只是归档旧的数据,不会对线上数据的OLTP查询造成太大影响,你可以将...2015-11-24
  • 如何使用php脚本给html中引用的js和css路径打上版本号

    在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css、js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就可以从浏览器的缓存中获取css、...2015-11-24
  • Oracle使用like查询时对下划线的处理方法

    这篇文章主要介绍了Oracle使用like查询时对下划线的处理方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-16
  • jQuery 1.9使用$.support替代$.browser的使用方法

    jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support 。 在更新的 2.0 版本中,将不再支持 IE 6/7/8。 以后,如果用户需要支持 IE 6/7/8,只能使用 jQuery 1.9。 如果要全面支持 IE,并混合...2014-05-31
  • 解决mybatis-plus 查询耗时慢的问题

    这篇文章主要介绍了解决mybatis-plus 查询耗时慢的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-04
  • C#注释的一些使用方法浅谈

    C#注释的一些使用方法浅谈,需要的朋友可以参考一下...2020-06-25
  • MySQL日志分析软件mysqlsla的安装和使用教程

    一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
  • 安装和使用percona-toolkit来辅助操作MySQL的基本教程

    一、percona-toolkit简介 percona-toolkit是一组高级命令行工具的集合,用来执行各种通过手工执行非常复杂和麻烦的mysql和系统任务,这些任务包括: 检查master和slave数据的一致性 有效地对记录进行归档 查找重复的索...2015-11-24
  • php语言中使用json的技巧及json的实现代码详解

    目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。我写过一篇《数据类型和JSON格式》,探讨它的设计思想。今天,我想总结一下PHP语言对它的支持,这是开发互联网应用程序(特别是编写API)必须了解的知识...2015-10-30
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • php类的使用实例教程

    php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25
  • 使用jquery修改表单的提交地址基本思路

    基本思路: 通过使用jquery选择器得到对应表单的jquery对象,然后使用attr方法修改对应的action 示例程序一: 默认情况下,该表单会提交到page_one.html 点击button之后,表单的提交地址就会修改为page_two.html 复制...2014-06-07
  • 双冒号 ::在PHP中的使用情况

    前几天在百度知道里面看到有人问PHP中双冒号::的用法,当时给他的回答比较简洁因为手机打字不大方便!今天突然想起来,所以在这里总结一下我遇到的双冒号::在PHP中使用的情况!双冒号操作符即作用域限定操作符Scope Resoluti...2015-11-08