首页 > 编程技术 > php

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

发布时间:2016-11-25 17:06

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--]

您可能感兴趣的文章: