insert数据库的问题(PHP)
【PHP语句如下】:
$query = " insert into tbshop('notice_id','notice_content', 'notice_adminid')
values(null, '".$POST['content']."','".$_SESSION['admin']
['admin_name']."') " ;
【问题说明】
这语句意思,把一个SQL语句,保存在变量中,便于调用。
但是我被这些“单引号”和“英语句号”搞糊涂了!
【问题如下:】
(1)第一个字段“notice_id”,他的值为什么是“null”,也就是“什么也没有”?作者写“null”,目的是什么??null可以实现id序号自动增加?
(2)第二个字段“notice_content”,他的值“$POST['content']”为什么左右套一对“单引号”,里面又套一对“双引号”?我理解为,左右套一个单引号就可以了,为什么还要套一对“双引号”?
(3)第二个字段“notice_content”,他的值“$POST['content']”为什么左右各有一个“英文句号”?
(4)第三个字段“notice_adminid”,他的值“$_SESSION['admin']['admin_name']”,为什么会有两个值:admin和admin_name?是不是把这两个值组合起来,成为一个字符串?
(5)上面语句中,三个字段,存入数据库时,是什么格式的?是字符串格式吗? 展开
1、你的回答是正确的,null是可以实现id的自动增加。前提是,你在设计数据库的时候,要使改建自动增加,可以写aotu_increase.
2、第二个问题和第三个问题其实是一个问题。
3、$_POST['content']是一个post变量,他左右的两个 . 是表示连接字符串用的:$str1 . $str2 表示吧$str1和$str2连接起来。
4、notice_adminid的值是一个数组,新建一个session变量,他的名字是admin,可以这么写:$_SESSION['admin'],要给他赋值的话,就直接写=就可以了,但是,如果将一个数组付给他的话,就得如$_SESSION['***']['***']这样访问了。所以,$_SESSION['admin']['admin_name']的意思是:访问$_SESSION['admin']变量。但是他是一个数组,就要接着写下标,访问数组$_SESSION['admin']的admin_name值,说的复杂就只这样,说得简单点就是一个二维数组的访问。其实$_SESSION本身就是一个数组,要是它的键值也是数组,那他就是一个二维数组了。
以上的这个语句你可以这样理解(如图),良好的代码排版可以有助于学习。如果你是初学,你因该好好的养成这个习惯。
参考资料: 原创
(1)notice_id是不是自动增长要看表结构,如果notice_id有AUTO_INCREMENT属性就是了。这样的话可以不用写入SQL语句里面了,SQL语句就可以简化为:
$query = " insert into `tbshop` (`notice_content`, `notice_adminid`) values ('".$POST['content']."','".$_SESSION['admin']['admin_name']."') " ;
(2) 单引号是SQL语句中如果字段类型不是数字型的话,就需要用单引号包含起来才能正确执行。双引号是PHP语句中用来注明在整句中这里写的是变量。
(3) 问号是不正常的,删除掉。
(4) $_SESSION['admin']['admin_name']是个二维数组
(5) 三个字段是什么类型就要看数据表里面设定的是什么了。
(2)用单引号“ ‘ ’ ”这是数据库语言语法规定
如insert into 表名(字段1,字段2,字段3,......)values('值1',‘值2’,‘值3’,.......);
(3)英文句号是一个点号 “ .” 这是php用来字符串与字符串的连接 如$a="hello"."world";其实就相当于$a="helloworld";在上面用引号是因为左中还在单引号 ,用来连接两边的单引号,以构成完整的sql语句:
(4)$_SESSION['admin']['admin_name']这里不是两个值,是一个session变量,是取得session的值
(5)数据库的格式,是你在创建表创建的
字段不相等,所以会出错.