Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1675193
  • 博文数量: 210
  • 博客积分: 10013
  • 博客等级: 上将
  • 技术积分: 2322
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-25 15:56
文章分类

全部博文(210)

文章存档

2011年(34)

2010年(121)

2009年(37)

2008年(18)

我的朋友

分类: Mysql/postgreSQL

2009-05-16 19:44:33

PHP+MYSQL+APACHE环境搭建(windows环境)

MYSQL安装:除了安装mysql原文件外,如果为了方便实用,最好安装一个图形界面工具,有mysql-front或者mysql-gui-tools提供查询管理器等功能。

对于没装mysql图形管理端的用户来说启动和停止mysql服务

D:\mysql\bin>net  start mysql
      D:\mysql\bin>net  stop  mysql

一些基本命令(最后一定要跟分号);

Show databases;

Show tables;

Description;

Select * from page;

典型错误的解决方法:

Error1366

       还有朋友在使用MYSQL的时候出现不能写入数据库的问题,这其实是MYSQL的设置有误,简单的修改一下就可以解决这个问题了。

  找到你的Mysql安装文件夹下的“my.ini”这个文件,就在MYSQL的安装目录下,如果找不到的话,用搜索也行!

  用记事本打开,找到下面这一行文本

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION"

  注意,可能不太一样,但前面肯定是 sql-mode 只有这么一行。

  在它的前面加上一个“#”号,即将其变为注释语句不执行

#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION"

保存文件,最后是重新启动一下MYSQL服务,或者干脆重新启动服务器。

ERROR1064:

转义字符问题。MySQL的转义字符“/ MySQL识别下列转义字符:   /0   一个ASCII 0 (NUL)字符。   /n   一个新行符。   /t   一个定位符。   /r   一个回车符。   /b   一个退格符。   /'   一个单引号(')符。   / "   一个双引号( ")符。   //   一个反斜线(/)符。   /%   一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。   /_   一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。   注意,如果你在某些正文环境中使用“/%”或“/%_”,这些将返回字符串“/%”和“/_”而不是“%”和“_”。   ★★ 有几种方法在一个字符串内包括引号:   1、必须转义的: 一个字符串用单引号“'”来引用的,该字符串中的单引号“'”字符可以用“''”方式转义。   一个字符串用双引号“ "”来引用的,该字符串中的“ "”字符可以用“ " "”方式转义。 同时你也可以继续使用一个转义字符“/”来转义 2、可不转义的: 一个字符串用双引号“ "”来引用的,该字符串中的单引号“'”不需要特殊对待而且不必被重复或转义。同理,一个字符串用单引号“'”来引用的,该字符串中的双引号“ "”不需要特殊对待而且不必被重复或转义。   下面显示的SELECT演示引号和转义如何工作:  

mysql > SELECT 'hello', ' "hello "', ' " "hello " "', 'hel''lo', '/'hello'; +----------+--------------+-------------------+----------+---------+ | hello   |   "hello "   |   " "hello " "   | hel'lo   | 'hello   | +----------+--------------+-------------------+----------+---------+

mysql > SELECT   "hello ",   "'hello' ",   "''hello'' ",   "hel " "lo ",   "/ "hello "; +----------+----------+-----------+------------+-----------+ | hello   | 'hello'   | ''hello''   | hel "lo   |   "hello   | +---------+-----------+-----------+------------+-----------+

mysql > SELECT   "This/nIs/nFour/nlines "; +--------------------+ | This Is Four lines   | +--------------------+   ★★

如果你想要把二进制数据插入到一个BLOB列,下列字符必须由转义序列表示:   NUL   ASCII 0。你应该用'/0'(一个反斜线和一个ASCII '0')表示它。   /   ASCII 92,反斜线。用'//'表示。 '   ASCII 39,单引号。用“/'”表示。   "   ASCII 34,双引号。用“/ "”表示。

解决代码:

       string replace = "'";

       //size_t start = contentsql.find_first_not_of(replace);

       size_t start =0;

       size_t end = 0;

       while(start!=string::npos)

       {

           end = contentsql.find_first_of(replace,start+1);

           if(end==string::npos)

              break;

           contentsql.insert(end,"'");

           //contentsql.erase(end,1);

           start = contentsql.find_first_not_of(replace,end+1);

       }

写入tm结构体格式时间

后台数据库字段格式timestamp1900-00-00-00-00-00

#ifndef   _TM_DEFINED  
  struct   tm   {  
                  int   tm_sec;           /*   seconds   after   the   minute   -   [0,59]   */  
                  int   tm_min;           /*   minutes   after   the   hour   -   [0,59]   */  
                  int   tm_hour;         /*   hours   since   midnight   -   [0,23]   */  
                  int   tm_mday;         /*   day   of   the   month   -   [1,31]   */  
                  int   tm_mon;           /*   months   since   January   -   [0,11]   */  
                  int   tm_year;         /*   years   since   1900   */  
                  int   tm_wday;         /*   days   since   Sunday   -   [0,6]   */  
                  int   tm_yday;         /*   days   since   January   1   -   [0,365]   */  
                  int   tm_isdst;       /*   daylight   savings   time   flag   */  
                  };  
  #define   _TM_DEFINED  
  #endif  
 
       struct tm *local;

       time_t time_;

       local=localtime(&time_);

       string timesql("");

       char timetmp[256];

       itoa(local->tm_year+1900,timetmp,10);

       timesql+=timetmp;

       timesql+="-";

       itoa(local->tm_mon+1,timetmp,10);

       timesql+=timetmp;

       timesql+="-";

       itoa(local->tm_mday,timetmp,10);

       timesql+=timetmp;

       timesql+="-";

       itoa(local->tm_hour,timetmp,10);

       timesql+=timetmp;

       timesql+="-";

       itoa(local->tm_min,timetmp,10);

       timesql+=timetmp;

       timesql+="-";

       itoa(local->tm_sec,timetmp,10);

       timesql+=timetmp;

忘记mysql用户root密码:

1、编辑MySQL(PHP搭配之最佳组合)配置文件:

windows环境中:%MySQL(PHP搭配之最佳组合)_installdir%\my.ini //一般在MySQL(PHP搭配之最佳组合)安装目录下有my.iniMySQL(PHP搭配之最佳组合)的配置文件。

linux环境中:/etc/my.cnf

[MySQL(PHP搭配之最佳组合)d]配置段添加如下一行:

skip-grant-tables

保存退出编辑。

2、然后重启MySQL(PHP搭配之最佳组合)服务

windows环境中:

net stop MySQL(PHP搭配之最佳组合)

net start MySQL(PHP搭配之最佳组合)

linux环境中:

/etc/init.d/MySQL(PHP搭配之最佳组合)d restart

3、设置新的ROOT密码

然后再在命令行下执行:

MySQL(PHP搭配之最佳组合) -uroot -p MySQL(PHP搭配之最佳组合)

直接回车无需密码即可进入数据库了。

现在我们执行如下语句把root密码更新为 7758521

update user set password=PASSWORD("7758521") where user='root';

quit 退出MySQL(PHP搭配之最佳组合)

4、还原配置文件并重启服务

然后修改MySQL(PHP搭配之最佳组合)配置文件把刚才添加的那一行删除。

再次重起MySQL(PHP搭配之最佳组合)服务,密码修改完毕。

修改完毕。

 

用新密码7758521试一下吧,又能登入MySQL(PHP搭配之最佳组合)的感觉就是不一样吧?

Apache安装:大部分地方是傻瓜似的,其中重要一步:windowsapache默认输出是英文,若要让apache输出中文就要修改apache配置文件httpd-languages.conf,在其中添加:AddDefaultCharset gb2312,并且讲httpd.confInclude conf/extra/httpd-languages.conf前面的#号去掉。

PHP安装:安装源文件,其中一项选择是选择以什么方式安装在什么服务器上(Apache2.2.xmodule以模块方式安装),下一步选择apache配置文件(具体到conf/.安装完成后在可以看到“It works”字样。

一个简单的测试程序

以文本编辑器打开一个新文件,输入以下内容,然后保存为index.php,存放在apache/htdocs文件夹下面,然后以访问。

print "

";

print "欢迎来到php的世界\n";

print "一下是此服务其上的php的详细配置";

phpinfo();

print "

";

?>

连接mysql数据库:如果想要连接mysql数据库,php5安装后默认情况下是没有mysql访问功能的,必须在php.ini中激活php_mysql.dll动态库,方法为在php.ini中添加一行:

Extension=php_mysql.dll

然后重启apache服务器就可以了。

测试程序:

$sserver   ="127.0.0.1:3306";

$susername = "root";

$spassword = "";

$dblink =@mysql_connect($sserver,$susername,$spassword);

$dbname = "medicine";

if($dblink==null)

{

       echo "打开数据库失败";

       exit();

       }

       echo "成功打开位于{$sserver}上的数据库";

       $bresult =mysql_select_db($dbname,$dblink);

       if($bresult==TRUE)

       {

              $ssql1 = "show databases";

              $result = mysql_query($ssql1,$dblink);

              echo "result的值是:".$result.",它的类型是:".gettype($result)."

";

              }

       @mysql_close($dblink);

       ?>

 

阅读(6554) | 评论(0) | 转发(0) |
0

上一篇:Vs连接mysql说明

下一篇:C++时间函数处理

给主人留下些什么吧!~~