第一篇:php和mysql问题及解答自己总结
关于在学习php 和mysql的过程中遇到的问题及解决办法
1.安装Easyphp(很容易,按导航做就可以),在安装成功后,运行Easyphp时,提示mysql端口被占用怎么办?
使用360软件管家-〉开机加速-〉管理正在运行的软件,找到占用端口的软件,关闭即可。
2.如何将.sql文件导入到mysql中?
首先将要导入的文件放入到bin文件夹下,然后在菜单选项中打开cmd命令行程序,接着输入:cd/就可以退到c盘根目录下了,然后输入cdC:Program FilesEasyPHP-5.3.9mysqlbin回车,在下一行中输入: mysql-u root –p回车,在下一行出现enter key:直接回车就行了(如果没有密码的话),在下一行就会出现mysql>,这时可以输入:create database phone;回车,输入:use phone;回车,输入:source c:phoneareas.sql;到这,.sql文件就已经导入到mysql中了。
3.导入的文件在输出到mysql中时是乱码,怎么办?
找到my.ini文件,在文件中找到mysql 行输入default-character-set=utf8,再找到mysqld 行输入character-set-server=utf8即可。
4.在php的文本编辑中,连接到mysql要进行查询,在查询语句中匹配有汉字,就无法查出正确的结果怎么办?
将该文本编辑另存为,然后在编码中选择额utf-8就可以了。
5.如何显示文件后缀名?
在计算机中找到组织,在组织中找到文件搜索项,在搜索项中找查看,在查看中有隐藏文件类型的扩展名,勾了就可以了。
第二篇:php mysql学习总结剖析
php 字符串
反引号里面的字符必须是命令 如`pwd` 是查看当前目录
转移字符:
符号
含义
”
双引号
反斜线
n
换行
t
跳位(Tab)
常量和变量 _FILE_ 这个默认常量是php程序文件名 _LINE_ 这个默认常量是php程序行数 E_ERROR 这个常量指到最近的错误处 E_WARNING 这个常量指到最近的警告处 E_PARSE 本常量为解析语法有何潜在问题处 自定义常量define(“
“,”
“);第一空格为常量,第二个为定义 或
define(‘
‘,);同上
有$为变量,无为常量 object为类变量,如 class foo{ function do-foo(){ echo”Doing foo”;} } $bar=new foo;
//建立变量,其他语言有(),php语言没有。// $bar->do-foo();
//调用变量的方式。//->为调用类函数用的符号
变量区分大小写
Php变量可以不用定义直接使用。局部变量和全局变量的区别见第二章,第21分钟处图。
全局变量必须用$GLOBALS数组和global声明。配置文件的globals函数须打开
是什么????
$PHP_SELF
//php文件名,全局变量 echo $GLOBALS[“PHP_SELF”];或 globals $PHP_SELF;不能echo $PHP_SELF;
函数不区分大小写
静态变量static variable
老语法$foo直接用
新语法$_GET[‘foo’]
$_POST[‘foo’]
$_SESSION[‘foo’]
位运算符:
&与
|或
~非
^异或
<< 向左移位乘法
>> 向右移位除法 逻辑运算:
&& 而且AND
||或者OR
Xor异或
!不Not
符号
意义 $
变量
&
变量的地址(加在变量前)->
类的方法或属性 =>
数组的元素值
? :
三元运算符
数组
数组的下标可以是整数,也可以是字符串
如$user[0]=”张三”;
$user[‘zs’]=”张三”;
$user[“zs”]=”张三”;或$user=array(“张三”,//下标0
echo $user[0];‘is’=>”李四”,//下标is
echo $user[is];或echo $user[‘is’];“ww”=>”王五”
//下标ww);
echo sizeof($user);
//记录数
多维数组 $user=array(array(‘张三’,88), array(‘李四’,95), array(‘王五’,99));函数
函数不区分大小写 函数原型:
返回类型 函数名称(类型 参数1, 类型 参数2…..);
数学函数
number abs(number)取绝对值|x| float sin(float)
正弦计算sin(x)float cos(float)
余弦计算cos(x)float sqrt(float)
开平方根计算 float log(float)
自然对数计算lnx float log10(float)
lgx float exp(float)
e的x次方
float pow(float x,float y)
x的y次方
double pi()
圆周率
void srand(int)
配置随机种子
int rand([int min],[int max])
取得随机数
string strtolower(string str)
字符串全转为小写 string strtoupper(string str)
字符串全转换为大写 string trim(string str)
截去字符串首尾的空格 string substr(stringstring,int start,int[length])
取子串
下标从0开始。从第start位取出length个字符,start为负数,从尾端算起,length为负数表示取倒数length个字符。第三章第七分钟 int strlen(string str)取得字符串长度
int strpos(string母串,string待查字符,int[offset])
寻找字符串中的某个字符最先出处 int strcmp(string str1,string str2)字符串比较
string md5(string str)计算字符串的MD5哈希值 fopen(“C: mpa.txt”,”r”);fopen(http://www.xiexiebang.commit
//提交,缺省自动提交 set autocommit=0
//取消自动提交 rollback
//回滚
事物可以用start transaction定义
有些语句自动提交,无法回滚,如DDL语句 save point //回滚点 锁
lock tables 表名[read][write], 表名[read][write],… 解锁
unlock tables
fulltext(title,body)
//在标题和主体上建立全文索引
select * from articles where match(title,match)against(‘database’);
select * from articles where match(title,match)
against(‘+mysql-yoursql’ in boolean mode);
包含mysql不包含yoursql 逻辑全文索引 against:匹配串:
apple banana
//找至少包含上面词中的一个的记录行 +apple+juice
//两个词均被包含在内
+apple macintosh
//包含词”apple”,但是如果同时包含”macintosh”,它的排列将更高一点 + apple-macintosh
//包含”apple”但不包含” macintosh”
“some words”
//可以包含”some words of wisdom”但不是”some noice words”
grant
//授权
grant select,insert,update,delete on *.* to ‘test_user’@’%’ identified by ‘123’;%
//任何主机
*.*
//任何数据库上的任何对象,*表示任何 123
//密码
test_user
//用户名
grant all privileges on *.* to admin@localhost identified by ‘123’ with grant option;
//创建本地的完全超级用户”admin,口令’123’” all privileges //完全的权限
with grant option
//授权给其他用户
删除用户
revoke all on *.* from ‘test_user’@ localhost;revoke all
//收回所有权限 flush privileges
//刷新内存授权表
delete from user where user=’test_user’;
// 删除用户
delete from user where host=’localhost’ and user=’’;
//删除匿名用户
mysqladmin-uroot password 123
//添加密码123 mysqladmin –uroot-p123 password 456
或
set password for root=password(“456”);
或
update user set password=password(‘456’)where user=’root’;
//再改密码为456 mysqladmin –uroot –p456 password’’
optimize table 表1,表2…;
//mysql优化
load data infile ‘路径’ into table teacher;
或 mysqlimport school 路径(如C:/a/b.txt)
//导入
mysqldump –opt school > school_2004_9.sql
//将数据库school中的表全备份到school_2004_9.sql文本文件
mysqldump –opt school teacher student > school_2004_9.sql //仅备份表teacher和student mysqldump –databases school test > school_2004_9.sql
//备份多个数据库
source school_2004_9.sql;
//从备份文件恢复数据
select * from emp limit(2,5);
//查第3到第7号员工的信息
select * from emp order by sal limit 0,5;= select * from emp order by sal limit 5;
mysql_data_seek(resource,int row_number)将指定的结果标识所关联的mysql结果内部的行指针移动到指定的行号。接着用 mysql_fetch_row()将返回那一行,row_num从0开始
if(!($supername==$supervisor)||!($superpass==$superpsw))//如果用户名和密码有一个错
action='$php_self’
//自身执行
相对路径是:../(表示当前文件的上一级目录);../../(表示当前文件的上一级目录的再上一级目录);./(表是当前目录);/(表示根目录)
$result=mysql_query(“update vote set $select_result='{$number}',total='{$total}' where id=$id”,$db);//当用$select_result表示某个字段(如result1到result9)传递$number,值等可用此表示法(当字段为变量)
路径:
$tempdir = str_replace(“",”/“,substr(dirname(__FILE__),0,-6));//这样做可以避免在虚拟空间站找不到路径的问题,require $tempdir.”/include/config.inc.php";
解决乱码
1选定代码片段
2选定修改----页面属性----标题/编码 3选择编码类型
4重新载入(这步不能省)
不懂 可直接用教程中文件名直接在百度提问,肯定有人和我学一样的东西
第三篇:js、php、mysql和html学习经验总结
1、mysql修改表为字段添加auto_increment2、JS如何获取屏幕浏览器网页高度宽度
3、《返回顶部》功能的实现
4、PHP 页面输出乱码解决方法
1、需要注意的是表名、字段名均不需要引号/。
比如我创建这样一个表
CREATE TABLE people(peopleid SMALLINT NOT NULL, name CHAR(50)NOT NULL);
我要为peopleid添加一个auto_increment 让他自动整长,开始mysql总是报1075错误;于是查了一下关于mysql 1075的错误,错误:1075 SQLSTATE: 42000(ER_WRONG_AUTO_KEY)
消息:不正确的表定义,只能有1个auto列,而且必须将其定义为 键。这是才明白 原来需要先添加一个主键
alter table people add primary key(peopleid);
alter table people change peopleid peopleid smallint auto_increment;
这样就成功了
那么,如果我们不添加主键呢?? 是不是就不可以了,当然不是 如果没有主键的话,我们这样也可以
alter table people change peopleid peopleid smallint auto_increment unique;
这样也是可以的,这里应该有一个注意,我刚开始的时候每次都没有修改都没有表明字段类型,总是报错,切忌要声明字段的类型.2、网页可见区域宽:document.body.clientWidth
网页可见区域高:document.body.clientHeight
网页可见区域宽:document.body.offsetWidth(包括边线的宽)网页可见区域高:document.body.offsetHeight(包括边线的宽)网页正文全文宽:document.body.scrollWidth
网页正文全文高:document.body.scrollHeight
网页被卷去的高:document.body.scrollTop
网页被卷去的左:document.body.scrollLeft
网页正文部分上:window.screenTop
网页正文部分左:window.screenLeft
屏幕分辨率的高:window.screen.height
屏幕分辨率的宽:window.screen.width
屏幕可用工作区高度:window.screen.availHeight
屏幕可用工作区宽度:window.screen.availWidth
HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidthscrollHeight: 获取对象的滚动高度。
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
scrollWidth:获取对象的滚动宽度
offsetHeight:获取对象相对于版面或由父坐标
offsetParent 属性指定的父坐标的高度
offsetLeft:获取对象相对于版面或由
offsetParent 属性指定的父坐标的计算左侧位置
offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置
event.clientX 相对文档的水平座标
event.clientY 相对文档的垂直座标
event.offsetX 相对容器的水平坐标
event.offsetY 相对容器的垂直坐标
document.documentElement.scrollTop 垂直方向滚动的值
event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量
IE,FireFox 差异如下:
IE6.0、FF1.06+:
clientWidth = width + padding
clientHeight = height + padding
offsetWidth = width + padding + border
offsetHeight = height + padding + border
IE5.0/5.5: clientWidth = widthborder
offsetWidth = width
offsetHeight = height
(需要提一下:CSS中的margin属性,与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)
文章转自|
#包含了一个位置信息
默认的锚是#top 也就是网页的上端
4、PHP 页面输出乱码解决方法
以前同事问我关于乱码的问题,乱码也分很多种,数据库乱码、页面提取数据乱码,而其他显示正常,phpmyadmin显示也是正常的等等,MySQL对中文的支持程度还是很有限的,尤其是新手,但凡出现乱码问题,就会头大。他的问题如下。
标题:mysql设置utf8_unicode_ci字符集php页面输出??乱码的解决方法
摘要:用PHPmyAdmin操作MySQL数据库汉字显示正常,但用PHP网页显示MySQL数据时所有汉字都变成了?号
乱码问题1:用PHPmyAdmin操作MySQL数据库汉字显示正常,但用PHP网页显示MySQL数据时所有汉字都变成了?号。
症状:用PHPmyAdmin输入汉字正常,但当PHP网页显示MySQL
数据时汉字就变成了?号,并且有多少个汉字就有多少个?号。
原因:没有在PHP网页中用代码告诉MySQL该以什么字符集输出汉字。
解决方法:
1.网页文件head设置编码
2.PHP页面在保存的时候使用utf-8编码保存,可以用记事本或convertz802转换文件
3.在MYSQL中新建数据库的时候数据库 选择UTF-8编码既字符集 设定为 utf-8_unicode_ci(Unicode(多语言), 不区分大小写),库里面 表table的 整理 设置为 utf-8_general_ci
表里面的每个字段的 整理 都设置为 utf-8_general_ci
4.在PHP连接数据库的时候,也就是mysql_connect()之后加入//设置数据的字符集utf-8
mysql_query(“set names ’utf8’ ”);
mysql_query(“set character_set_client=utf8”);
mysql_query(“set character_set_results=utf8”);后两句可以不需要
注意是utf8,不是utf-8。
如果你的网页编码是gb2312,那就是 SET NAMES GB2312。但编辑员强烈推荐网页编码、MySQL数据表字符集、PHPmyAdmin都统一使用UTF-8。
以上四点即可实现全站utf-8编码,而且在数据库中也不会有中文乱码。乱码问题2:用PHPmyAdmin输入数据时发生错误,不让输入或出现乱码
解决方法:这是设置问题。请安装最新版PHPmyAdmin或Appserv,打开PHPmyAdmin,MySQL 字符集: UTF-8 Unicode(utf8); MySQL 连接校对应该为utf8_unicode_ci;创建新的数据库时整理一栏请也选成utf8_unicode_ci。网页字符集也最好选用utf-8。utf-8是国际标准编码,是趋势。
乱码问题2:在本机开发好的MySQL数据表,在本机测试一切正常,但用网站空间商提供的PHPmyAdmin上传时却出现问题,上传失败。尤其是使用国外PHP空间。
解决方法:首先查看网站空间商提供的PHPmyAdmin字符集设定,确定自己所建数据表与服务商的是同一编码。在国外MySQL是不支持gb2312的,甚至最新版的Apache也不支持gb2312。如果是因为编码不统一,可以重建数据表,当然是用国际标准的UTF8。
第四篇:总结PHP程序员最常犯的11个MySQL错误
总结PHP程序员最常犯的11个MySQL错误
对于大多数web应用来说,数据库都是一个十分基础性的部分。如果你在使用PHP,那么你很可能也在使用MySQL—LAMP系列中举足轻重的一份子。
对于很多新手们来说,使用PHP可以在短短几个小时之内轻松地写出具有特定功能的代码。但是,构建一个稳定可靠的数据库却需要花上一些时日和相关技能。下面列举了我曾经犯过的最严重的11个MySQL相关的错误(有些同样也反映在其他语言/数据库的使用上)。。
1、使用MyISAM而不是InnoDB
MySQL有很多数据库引擎,但是你最可能碰到的就是MyISAM和InnoDB。
MySQL 默认使用的是MyISAM。但是,很多情况下这都是一个很糟糕的选择,除非你在创建一个非常简单抑或实验性的数据库。外键约束或者事务处理对于数据完整性 是非常重要的,但MyISAM都不支持这些。另外,当有一条记录在插入或者更新时,整个数据表都被锁定了,当使用量增加的时候这会产生非常差的运行效率。
结论很简单:使用InnoDB。
2、使用PHP的mysql函数
PHP自产生之日就提供了MySQL库函数(or near as makes no difference)。很多应用仍然在使用类似mysql_connect、mysql_query、mysql_fetch_assoc等的函数,尽管PHP手册上说:
如果你在使用MySQL v4.1.3或者更新版本,强烈推荐使用您使用mysqli扩展。
mysqli(MySQL的加强版扩展)有以下几个优点:
可选的面向对象接口
prepared表达式,这有利于阻止SQL注入攻击,还能提高性能
支持更多的表达式和事务处理
另外,如果你想支持多种数据库系统,你还可以考虑PDO。
3、没有处理用户输入
这或者可以这样说#1:永远不要相信用户的输入。用服务器端的PHP验证每个字符串,不要寄希望与JavaScript。最简单的SQL注入攻击会利用如下的代码:
$username = $_POST[“name”];$password = $_POST[“password”];$sql = “SELECT userid FROM usertable WHERE username='$username' AND password='$password';”;// run query...只要在username字段输入“admin';--”,这样就会被黑到,相应的SQL语句如下:
SELECT userid FROM usertable WHERE username='admin';
狡猾的黑客可以以admin登录,他们不需要知道密码,因为密码段被注释掉了。
4、没有使用UTF-8
美国、英国和澳大利亚的我们很少考虑除英语之外的其他语言。我们很得意地完成了自己的“杰作”却发现它们并不能在其他地方正常运行。
UTF-8解决了很多国际化问题。虽然在PHP v6.0之前它还不能很好地被支持,但这并不影响你把MySQL字符集设为UTF-8。
5、相对于SQL,偏爱PHP
如果你接触MySQL不久,那么你会偏向于使用你已经掌握的语言来解决问题,这样会导致写出一些冗余、低效率的代码。比如,你不会使用MySQL自带的AVG()函数,却会先对记录集中的值求和然后用PHP循环来计算平均值。
此外,请注意PHP循环中的SQL查询。通常来说,执行一个查询比在结果中迭代更有效率。
所以,在分析数据的时候请利用数据库系统的优势,懂一些SQL的知识将大有裨益。
6、没有优化数据库查询
99%的PHP性能问题都是由数据库引起的,仅仅一个糟糕的SQL查询就能让你的web应用彻底瘫痪。MySQL的EXPLAIN statement、Query Profiler,还有很多其他的工具将会帮助你找出这些万恶的SELECT。
7、不能正确使用数据类型
MySQL提供了诸如numeric、string和date等的数据类型。如果你想存储一个时间,那么使用DATE或者DATETIME类型。如果这个时候用INTEGER或者STRING类型的话,那么将会使得SQL查询非常复杂,前提是你能使用INTEGER或者STRING来定义那个类型。
很多人倾向于擅自自定义一些数据的格式,比如,使用string来存储序列化的PHP对象。这样的话数据库管理起来可能会变得简单些,但会使得MySQL成为一个糟糕的数据存储而且之后很可能会引起故障。
8、在查询中使用*
永远不要使用*来返回一个数据表所有列的数据。这是懒惰:你应该提取你需要的数据。就算你需要所有字段,你的数据表也不可避免的会产生变化。
9、不使用索引或者过度使用索引
一般性原则是这样的:select语句中的任何一个where子句表示的字段都应该使用索引。
举 个例子,假设我们有一个user表,包括numeric ID(主键)和email address。登录的时候,MySQL必须以一个email为依据查找正确的ID。如果使用了索引的话(这里指email),那么MySQL就能够使用 更快的搜索算法来定位email,甚至可以说是即时实现。否则,MySQL就只能顺序地检查每一条记录直到找到正确的email address。
有的人会在每个字段上都添加索引,遗憾的是,执行了INSERT或者UPDATE之后这些索引都需要重新生成,这样就会影响性能。所以,只在需要的时候添加索引。
10、忘记备份!
虽然比较罕见,但是数据库还是有崩溃的危险。硬盘有可能损坏,服务器有可能崩溃,web主机提供商有可能会破产!丢失MySQL数据将会是灾难性的,所以请确保你已经使用了自动备份或者已经复制到位。
11、Bonus mistake-不考虑使用其他数据库
对于PHP开发人员来说,MySQL可能是使用最广泛的数据库系统,但并不是唯一的选择。PostgreSQL和Firebird是最强有力的竞争者:这个两者都是开源的,而且都没有被公司收购。微软提供了sql server Express,甲骨文提供了10g Express,这两者都是企业级数据库的免费版本。有时候,对于一个较小的web应用或者嵌入式应用,SQLite也不失为一个可行的替代方案。
第五篇:趣味问题和解答
1.如果你想知道一位女士的年龄,可不可以直接问她呢?
答:看情况而言。如果看对方是个小不点,或是十几、二十岁,问问是没有关系的。因为老美看来,这是风华正茂的人生黄金时期,所以大胆地问吧!对其他年龄阶段的人来说,问年龄是忌讳。西方女人年龄越大越爱打扮,也很懂得保养,目的是让自己看上去年轻。
2.能不能问老外月收入?
答:绝对不行。西方人在谈论个人资产、收入时是绝对不谈及细节的。
3.老外的婚姻状况是不是隐私呢?我可不可以问他们有没有结婚呢?
答:不算隐私,也不用问,看他们手上的戒指的位置就知道了。如果女性将戒指戴在无名指上,则表明她已为人妇或即将为人妇,这样再没有陌生男性主动接近或搭讪了。也有未婚女性戴玩笑戒指(joke rings),以避免不必要的眼神和注意。而男性的接着很简单,只是一个环,戴在无名指上。然而在求职和招聘的过程中,婚姻状况可是隐私。大多美国女性结婚后就会做家庭主妇,她们在求职过程中无法像其他女星一样,自主的处理工作和生活的矛盾,所以处于公司利益的需要,大部分公司更愿意招聘未婚女性,而这恰恰违反了美国“众生平等”的理念和法律。宗教信仰、性取向、种族、婚姻状况这些招聘过程中很敏感的话题,一旦公司打输了官司就要承担很高的赔偿金。所以公司在招聘的时候都不会提这个问题。如果有考官问道,可以巧妙地回答:may I ask how this question is related to the position I am applying for? 4.在美国,同性朋友之间可不可以称赞对方的容貌呢?
答:男生不可以,女生看可以。如果你赞美一个男生的外貌或打扮,老外就以为你是gay!所以可以赞美出外貌以外的其他方面,如待人好、友善、工作努力等。而赞美女性就没事了,而且越夸张越好,即phony courtesy(虚伪的礼貌)。