php中数据表无法插入字段数据,但可以查询条数,通过navicat可以添加表,字段数据

t8ddd88 2016-07-02 02:02:20
代码如下:
<?php


$con = mysql_connect("xxxx","user","1234");
if(!$con)
{
echo "conn bad";
}
else
echo "conn ok";
mysql_query("set names 'uft8'");
//经测试,数据库连接上了

$dbselect=mysql_select_db("mydb",$con);

if(!$dbselect)
{
echo"bad";
}
else
echo "ok";
//测试,输出ok

//调试输出用 判断是否正确抓取到了前端
$name = $_POST['name'];
$tel = $_POST['tel'];
$add = $_POST['add'];
//echo $name;
//echo "__";
//echo $tel;
//echo "__";
//echo $add;
//echo "__";
//////经测试,数据抓取到了


//$sql2 = "INSERT INTO dingdan(user ,tel ,add ) VALUES ( '$name', '$tel', '$add')";
$sql2 = "INSERT INTO dingdan(user ,tel ,add ) VALUES ( 'dd', '88888', 'kdsalfsaasd')";


mysql_query($sql2,$con);


$sql3="select * from dingdan";
$result2=mysql_query($sql3,$con);

echo mysql_num_rows($result2);

mysql_close($con);
?>

最后显示: conn okok 2(数据库中确实已经通过navicat添加了2条数据),那么程序是执行到最后的,但是数据库,查看dingdan表,数据没有添加进去$sql2 = "INSERT INTO dingdan(user ,tel ,add ) VALUES ( '$name', '$tel', '$add')";没有
$sql2 = "INSERT INTO dingdan(user ,tel ,add ) VALUES ( 'dd', '88888', 'kdsalfsaasd')";也没有,
这2条语句是不是有问题?
如果不是,是不是和数据库有关系?前端有没有问题?
注:数据库以前装过discuz,昨天把所有表通过navicat删了,
...全文
213 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2016-07-02
  • 打赏
  • 举报
回复
mysql_query($sql2,$con) or die(mysql_error()) 学会调试很重要; mysql_query("set names 'uft8'"); 粗心大意害死人
xuzuning 2016-07-02
  • 打赏
  • 举报
回复
上面不是有 吗?
验证码太变态了,那是管理员的事情!版主只是义务劳动
t8ddd88 2016-07-02
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
1、字符型字段必须选择宽字符字符集,比如 utf8、gbk、ucs-2等 2、操作前一定要有工作字符集声明。比如 mysql_query("set names utf8")、mysql_query("set names gbk");等
版主,如何付分给您, 另外验证码太变态了
t8ddd88 2016-07-02
  • 打赏
  • 举报
回复
用的是虚拟主机中的数据库: +--------------------------+---------------+ | character_set_client | utf8 | | character_set_connection |utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1| | character_set_system | utf8 | +--------------------------+-------- | character_set_database | utf8 | | character_set_system | utf8 | 都是latin1,后来在navicat中改成utf8,也不知道生效没有 | character_set_server | latin1| 这个改不了, 前端,php文件都用的utf8 虚拟主机中的数据库是不是没法改了?这样乱码无解了? 再次感谢xuzuning版主!
xuzuning 2016-07-02
  • 打赏
  • 举报
回复
1、字符型字段必须选择宽字符字符集,比如 utf8、gbk、ucs-2等 2、操作前一定要有工作字符集声明。比如 mysql_query("set names utf8")、mysql_query("set names gbk");等
t8ddd88 2016-07-02
  • 打赏
  • 举报
回复
非常感谢,问题解决了,出来一个新问题,输入中文在,数据库后台看到的是乱码(数字加%,像这样的:4589834%),导出txt文件还是这种情况,百度,还没有解决
【初识mysql】 mssql 2000 Access DB2 oracle 【mysql安装】 1、官方下载mysql win32 msi 2、点击安装 3、配置 4、查看是否安装成功 通过cmd 输入netstat -a搜索3306端口是否处于listening状态 【mysql服务的启动与停止】 1、右击我的电脑-管理-服务与应用程序-服务-mysql 2、net stop mysql|net start mysql 【mysql的配置文件以及数据位置】 1、安装目录下名为mysql.ini文件 2、默认数据位置 配置文件字段为datadir 3、配置文件简单的字段的理解 【mysql的登录与退出】 1、通过图形化界面 phpmyadmin mysqlGUI Navicat for MySQL 2、DOS登录或者自带的MySQL Command Line Client mysql -h IP或者域名 -u username -p -P port 回车 PWD 3、exit或者quit(CLI) 【密码的修改】 1、set password = password('密码'); set password for 用户名@域名或者地址 =password('密码'); 2、cmd下输入mysqladmin -uroot -p password 新密码 回车 旧密码 3、通过修改mysql数据库的user update mysql.user set password=password('新密码') where host='ip或者域名' and user='用户名' 【忘记密码的解决办法】 1、停止mysql服务 2、mysqld(mysqld-nt) --skip-grant-tables 3、重新打开窗口cmd 4、输入mysql -u root -p 回车 无需密码 5、通过上述密码修改方法3修改密码 6、flush privileges 7、exit 8、资源管理器kill进程mysqld 或者 mysql-nt 不要把mysql.exe 9、net start mysql 【简单的用户权限管理】 1、用户的创建 create user 用户名 identified by 密码 2、删除用户 drop user 用户名 3、用户重命名 rename user 原始名称 to 新名称 注释 : 用户名@localhost 只能本地登录 用户名@% 可以通过非本地登录 如果本地登录将%自动转换为localhost 【用户的权限】 1、初始用户只具有连接权限不具有其他权限,而且连接这个权限无法收回 只能通过删除用户 2、授权grant 收回权限revoke 3、授权语法 grant 权限 on 数据库. to 用户@域名或者IP identified by '密码' 4、收回权限 revoke 权限 on 数据库. from 用户@域名或者IP max_queries_per_hour 每个小时最大查询的数 0没有限制 max_updates_per_hour 每个小时最大更新数据的次数 0没有限制 max_user_connects 最大并发数 连接数 0没有限制 max_connects_per_hour 每个小时最大的并发数 0没有限制 【数据库的基本CLI】 1、show databases; 查看服务器的所有数据库 2、select user(); 查看当前用户 3、select version(); 版本 4、show processlist; 在线详细信息 5、show warnings; 警告信息 6、use 数据库名称; 调用具体的数据库 7、show grants [for 用户名@域名或者IP]; 查看用户权限 8、select database(); 产看当前使用数据库 【数据库的创建和删除】 1、create database [if not exists] 数据库名称 2、drop database 数据库名称 【的创建、修改和删除】 1、创建 create table [if not exists] 名( 字段名称 类型(大小) 属性, 字段名称 类型(大小) 属性, 字段名称 类型(大小) 属性, ⋯⋯ )engine=innodb default charset=编码; create table [if not exists] 名( 字段名称 类型(大小), 字段名称 类型(大小), 字段名称 类型(大小), ⋯⋯ 属性, 属性, ⋯⋯ )engine=innodb default charset=编码; 2、数据类型 日期类型:date Y-M-D 20110105(自动去除其的非法符号!,*) time h:m:s 14:12:11 datetime date+time Y-M-D H:m:S timestamp:更新时日期值也会更新 timestamp default current_timestamp:只记录第一次插入的时间 数值类型: tinyint 0|1 smallint mediumint int[M] M默认11 人为设定系统也会根据自动分配空间(类似char和varchar) bigint float[(M,D)] 10的(M-D)次方->代最大值 D->代保留位数不够补0 //For float(M,D), double(M,D) or decimal(M,D), M must be >= D //只写M 0-24代float精确度总的十位数超过6位用科学计数法,小数超出四舍五入,不够不补0 //float和double在desc不会显示精确度 //select 通过 float查询的前提是MD都有或者是double double //25-53代double 但是不可以写精确度 >15位用科学计数法 字符串类型 char varchar text blob enum(v1,v2,v3⋯⋯65535) 插入的值是其的一个 set(v1,v2,v3⋯⋯64) 插入的值是其的0到多个 3、属性 1、自增属性 auto_increment 2、不为空not null | null 3、默认值default 4、主键primary key 5、列值的唯一 unqiue 6、索引 index|key 7、前导0 zerofill 属性可以写在末尾的主键 列值唯一 索引 4、查看 desc 名 show columns from 名 show columns in 名 5、修改 alter table 名 a) drop 字段 注意当字段为1个的时候不能删除 b) add 字段名 类型[大小] 属性,add 字段名 类型[大小] 属性⋯⋯ [after|first 字段] c) modify 字段名 类型[大小] 属性,modify 字段名 类型[大小] 属性⋯⋯ [after|first 字段] d) change 原始的字段名 新的字段字段名 类型[大小] 属性,modify 字段名 类型[大小] 属性⋯⋯ [after|first 字段] e) rename 新的名 (方法二:rename table 旧的名 to 新的名) f) engine=存储引擎(type不建议使用) g) charset=字符编码 6、删除格 drop table 名 【创建例题】 例题1:创建一个用于存储用户上传的文件信息 (文件的原始名,大小,路径,文件名,类型,上传人,是否共享) 例题2:创建一个用于存储用户注册信息 (用户名,密码,id,email,安全问题,安全问题答案) 例题3:创建一个用户留言板信息 (给谁留言,是谁留的言,留言时间,留言内容) 【数据库和相关信息的一些CLI】 1、show create database 数据库名 2、show create table 名 3、show status; 4、show table status like ""; 5、show variables; 【数据库的备份与导入】 1、备份cmd->mysqldump -u root -p 数据库 [名] > 文件名.sql->回车->密码 注意:cmd下运行mysqldump >覆盖 >>追加 2、还原:进入mysql下->source 路径 3、备份和还原可以进入配置文件所在数据目录下拷贝 【CURD操作】 1、记录的写入 insert into 名[(字段1,字段2,字段3,⋯⋯)] values(值1,值2,值3,⋯⋯),(值1,值2,值3,⋯⋯) 2、insert into 名 set 字段1=值1,字段2=值2,字段3=值3⋯⋯ 3、记录的删除 delete from 名 where 条件 4、记录的更新 update 名 set 字段1=值1,字段2=值2,字段3=值3⋯⋯ [where 条件] 5、记录的查询 select *|字段[,字段] [as 新字段名称] from 名 [where 条件 group by 字段 having 附加条件 in() order by ASC|DESC limit开始,长度] 6、where 条件的理解 = | !=(<>) | between and | or | and | in | not 【mysql的简单的数学函数】 1、统计函数 count()|max()|min()|avg()|sum() 2、mysql运算 php运算一致(除逻辑运算&& || !) 3、数学函数 pi()|round()|rand()|ceil()|floor|sin()|abs()|mod() 4、特殊的 like '' %->任意 regexp '' ->posix 【mysql的字符串和时间】 concat(字符1,字符2...) 字符连接 instr(字符串,字符) 寻找字符所在字符串的位置 char ascii编码 转化为字符 ord 字符转化为ascii编码 substring(字符串,开始位置,长度); length(字符串) 字符串长度 substr(字符串,开始位置,长度); lpad 往左边填充 rpad 往右边填充 lower 转化为小写 upper 转化为大写 select left(字符串,长度);从左边取几位 select right(字符串, 长度);从右边取几位 select curdate(); 获取当前的日期 select curtime(); 获取当前的时间 select now();获取当前的时间跟日期

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧