mysql_query("set names 'gbk'")
解决的方法就这么简单。
今天做了一个数据库查询,放出代码。
<?php
/*
filename:query.php
do:get and show the data
author:www.5dkx.com
*/
include_once("conn.php");
include_once("include.php");
mysql_query("set names 'gbk'")or die("设置字符库失败\n");
mysql_select_db($db)or die("连接数据库失败!\n");
$exec = "select * from $table";
//echo $exec;
$result = mysql_query($exec,$conn)or die("查询数据库失败\n");
echo "<table border=2>";
for($cout=0;$cout<mysql_numrows($result);$cout++)
{
$city = mysql_result($result,$cout,city);
$name = mysql_result($result,$cout,name);
$phone = mysql_result($result,$cout,phone);
echo "<tr>";
echo "city: $city";
echo "name: $name";
echo "phone: $phone";
echo "</tr>";
}
echo "</table>";
?>
官方主页 http://querypath.org/
A QueryPath Tutorial(一个简易说明)
QueryPath makes use of method chaining to provide a concise suite of tools for manipulating a DOM.
The basic principle of method chaining is that each method returns an object upon which additional methods can be called. In our case, the QueryPath object usually returns itself.
Let's take a look at an example to illustrate:
$qp = qp(QueryPath::HTML_STUB); // Generate a new QueryPath object.(创建一个 QP 对象)
$qp2 = $qp->find('body'); // Find the body tag.(找到 "body" 标签)
// Now the surprising part:(请看下面让你惊奇的地方)
if ($qp === $qp2) {
// This will always get printed.(它总是会这样输出)
print "MATCH";
}
Why does $qp always equal $qp2? Because the find() function does all of its data gathering and then returns the QueryPath object.
This might seem esoteric, but it all has a very practical rationale. With this sort of interface, we can chain lots of methods together:
(你可以向使用 jQuery 一样来连缀方法)
qp(QueryPath::HTML_STUB)->find('body')->text('Hello World')->writeHTML();
In this example, we have four method calls:
qp(QueryPath::HTML_STUB): Create a new QueryPath object and provide it with a stub of an HTML document. This returns the QueryPath object.
find('body'): This searches the QueryPath document looking for an element named 'body'. That element is, of course, the <body></body> portion of the HTML document. When it finds the body element, it keeps an internal pointer to that element, and it returns the QueryPath object (which is now wrapping the body element).
text('Hello World'): This function takes the current element(s) wrapped by QueryPath and adds the text Hello World. As you have probably guessed, it, too, returns a QueryPath object. The object will still be pointing to the body element.
writeHTML(): The writeHTML() function prints out the entire document. This is used to send the HTML back to the client. You'll never guess what this function returns. Okay, you guessed it. QueryPath.
So at the end of the chain above, we would have created a document that looks something like this:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
<title>Untitled</title>
</head>
<body>Hello World</body>
</html>
Most of that HTML comes from the QueryPath::HTML_STUB. All we did was add the Hello World text inside of the <body></body> tags.
Not all QueryPath functions return QueryPath objects. Some tools need to return other data. But those functions are well-documented in the included documentation.
These are the basic principles behind QueryPath. Now let's take a look at a larger example that exercises more of the QueryPath API.
A Longer Example
This example illustrates various core features of QueryPath.
In this example, we use some of the standard QueryPath functions (most of them implementing the jQuery interface) to build a new web page from scratch.
Each line of the code has been commented individually. The output from this is shown in a separate block beneath.
<?php
/**
* Using QueryPath.
*
* This file contains an example of how QueryPath can be used
* to generate web pages.
* @package QueryPath
* @subpackage Examples
* @author M Butcher <matt@aleph-null.tv>
* @license LGPL The GNU Lesser GPL (LGPL) or an MIT-like license.
*/
// Require the QueryPath core.
require_once 'QueryPath/QueryPath.php';
// Begin with an HTML stub document (XHTML, actually), and navigate to the title.
qp(QueryPath::HTML_STUB, 'title')
// Add some text to the title
->text('Example of QueryPath.')
// Now look for the <body> element
->find(':root body')
// Inside the body, add a title and paragraph.
->append('<h1>This is a test page</h1><p>Test text</p>')
// Now we select the paragraph we just created inside the body
->children('p')
// Add a '' attribute to the paragraph
->attr('class', 'some-class')
// And add a style attribute, too, setting the background color.
->css('background-color', '#eee')
// Now go back to the paragraph again
->parent()
// Before the paragraph and the title, add an empty table.
->prepend('<table id="my-table"></table>')
// Now let's go to the table...
->find('#my-table')
// Add a couple of empty rows
->append('<tr></tr><tr></tr>')
// select the rows (both at once)
->children()
// Add a CSS class to both rows
->addClass('table-row')
// Now just get the first row (at position 0)
->eq(0)
// Add a table header in the first row
->append('<th>This is the header</th>')
// Now go to the next row
->next()
// Add some data to this row
->append('<td>This is the data</td>')
// Write it all out as HTML
->writeHTML();
?>
The code above produces the following HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
<title>Example of QueryPath.</title>
</head>
<body>
<table id="my-table">
<tr ><th>This is the header</th></tr>
<tr ><td>This is the data</td></tr>
</table>
<h1>This is a test page</h1>
<p >Test text</p></body>
</html>
Now you should have an idea of how QueryPath works. Grab a copy of the library and try it out! Along with the source code, you will get a nice bundle of HTML files that cover every single public function in the QueryPath library (no kidding). There are more examples there, too.
不错的东东!赶紧 Grab 它吧~~!
MySQL Workbench
MySQL Workbench是一个由MySQL开发的跨平台、可视化数据库工具。它作为DBDesigner4工程的替代应用程序而备受瞩目。MySQL Workbench可以作为windows、linux和OS X系统上的原始GUI工具,它有各种不同的版本,你可以查看下面的链接以获得它的版本信息。
MySQL Workbench版本信息
点此下载
phpMyAdmin
phpMyAdmin是一款免费的、用PHP编写的工具,用于在万维网上管理MySQL,它支持MySQL的大部分功能。这款含有用户界面的软件能够支持一些最常用的操作(比如管理数据库、表格、字段、联系、索引、用户、许可,等等),同时你还可以直接执行任何SQL语句。
它所具备的特性:
>直观的Web界面
>支持大多数MySQL功能:
> 浏览和丢弃数据库、表格、视图、字段和索引
>创建、复制、删除、重命名以及更改数据库、表格、字段和索引
>维护服务器、数据库以及表格,能对服务器的配置提出建议
>执行、编辑和标注任何SQL语句,甚至批量查询
>管理MySQL用户以及用户权限
>管理存储的过程(stored procedures)和触发器(triggers)
>从CSV 和 SQL文件格式中导入数据
>能够以多种格式导出数据:CSV、SQL、XML、PDF、ISO/IEC 26300等
>管理多台服务器
>为数据库布局创建PDF图表
>使用Query-by-example (QBE)创建复杂的查询
>在数据库中进行全局搜索,或者在数据库的子集中进行搜索
>用预定义的函数把存储的数据转化成任何格式
>还具有其他更多特性...
点此下载
Aqua Data Studio
对于数据库管理人员、软件开发人员以及业务分析师来说,Aqua Data Studio是一个完整的集成开发环境(IDE)。它主要具备了四个方面的功能:1)数据库查询和管理工具;2)一套数据库、源代码管理以及文件系统的比较工具;3)为Subversion(SVN)和CVS而设计了一个完整的集成源代码管理客户端;4)提供了一个的数据库建模工具(modeler),它和最好的独立数据库图表工具一样强大。
点此下载
SQLyog
SQLyog是一个全面的MySQL数据库管理工具(/'GUI'/'Frontend')。 它的社区版(Community Edition)是具有GPL许可的免费开源软件。这款工具包含了开发人员在使用MySQL时所需的绝大部分功能:查询结果集合、查询分析器、服务器消息、表格数据、表格信息,以及查询历史,它们都以标签的形式显示在界面上,开发人员只要点击鼠标即可。此外,它还可以方便地创建视图和存储过程,最近几周笔者一直在反复使用这个功能。
点此下载
MYSQL Front
这个MySQL数据库的图形GUI是一个“真正的”应用程序,它提供的用户界面比用PHP和HTML建立起来的系统更加精确。因为不会因为重载HTML网页而导致延时,所以它的响应是即时的。如果供应商允许的话,你可以让MySQL-Front直接与数据库进行工作。如果不行,你也只需要在发布网站上安装一个小的脚本即可。登录信息会存储在你的硬盘上,因此你不必再登录到不同的网络界面上了。
点此下载
mytop
mytop是一款基于控制台的工具(不是GUI),用于监视线程以及MySQL 3.22.x、3.23.x和4.x服务器的整体性能。它可以在大多数安装了Perl、DBI以及 Term::ReadKey的Unix系统上(包括Mac系统OS X)运行。如果你安装了Term::ANSIColor,你能得到彩色的视图。如果你安装了Time::HiRes,你还可以得到一个不错的 “每秒查询数” 实时统计。mytop0.7版甚至还能在windows上运行。
mytop的灵感来自系统监视工具“top”。我经常在Linux、FreeBSD和Solaris上使用top,你很可能会在mytop中注意到来自这些操作系统的某些特性。mytop连接到MySQL服务器之后,能定期运行SHOW PROCESSLIST和SHOW STATUS命令,并以一种有用的格式总结从这些命令中所获得的信息。
点此下载
Sequel Pro
Sequel Pro是一款管理MAC OSX数据库的应用程序,它可以让你直接访问本地以及远程服务器上的MySQL数据库,并且支持从流行的文件格式中导入和导出数据,其中包括SQL、CSV 和XML等文件。最初,Sequel Pro只是开源CocoaMySQL工程的一个分支。部分特性如下:
>你很容易就可以建立起一个到Mac电脑本地MySQL服务器的连接
>它具有全部的表格管理功能,包括索引。
>支持MySQL视图
>它使用多窗口功能,能够立即支持多个数据库或表格
点此下载
SQL Buddy
SQL Buddy是一个强大的轻量级Ajax数据库管理工具。它非常易于安装,你只需要把文件夹解压到服务器里就行了,这再简单不过了!你还可以进行常见的绝大部分操作。这个工具还有许多有用的快捷键,你可以从这里查看:SQL Buddy Keyboard Shortcuts。
点此下载
MySQL Sidu
MySQL Sidu是一款免费的MySQL客户端,它通过网络浏览器来运行,非常容易上手!Sidu这几个字母表示Select(选择)、Insert(插入)、Delete(删除)和Update(更新)。Sidu其实还有更多的功能,它看起来更像MySQL前端软件的GUI而不是网页。
>SIDU支持SQL选择、插入、删除,更新功能。
>SIDU支持在浏览器上工作,如Firefox、IE、Opera、Safari、Chrome等等。
>SIDU看起来像MySQL前端软件的GUI而不是网页。
>SIDU可以跟MySQL、Postgres 和SQLite DBs一起工作。
点此下载
Navicat Lite MySQL Admin Tool
Navicat是一款快速、可靠的数据库管理工具,很受大家的欢迎。Navicat专门用来简化数据库管理并且减少管理成本,它旨在满足数据库管理人员、数据库开发人员以及广大中小企业的需要,它有一个很直观的GUI,可以让你安全便捷的创建、组织、访问以及分享信息。
对于MySQL来说,Navicat工具是一个强大的数据库管理和开发工具。它可以跟任何版本的MySQL数据库服务器(3.21版或者以上版本)一起工作,并且支持MySQL大多数最新的功能,包括Trigger、Stored Procedure、Function、Event, View和 Manage User等。Navicat Lite可以免费下载,但是仅适用于非商业活动。
点此下载