分类: 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.ini即MySQL(和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安装:大部分地方是傻瓜似的,其中重要一步:windows下apache默认输出是英文,若要让apache输出中文就要修改apache配置文件httpd-languages.conf,在其中添加:AddDefaultCharset gb2312,并且讲httpd.conf中Include 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);
?>