phpmysql引号
A. 怎么样才能把" " 双引号存进MYsql 我是用php
select '"hhhhh"'把双引号当成一个字符处理吧
B. php向mysql插入数据出错
mysql语句在执行insert,update时,对于非数字的值,必须加引号,比如
updatetablenamesetattrA='valueA'
updatetablenamesetattrA=valueA;
这样就会报错。对于数字的值,可以不加,加上也不会影响插入效果,比如
updatetablenamesetintAttrA=1;
updatetablenamesetintAttrA='1';
这两种都是可以的。
你这里报错的一行代码,假设输入的$_POST['username'] = ‘a’;$_POST['pwd'] = ‘b’;$_POST['content'] = 'c';
在处理后,最后执行的是
INSERT INTO userinfo (username, pwd, content) VALUES (a, b, c);
它的错误就是上面说的非数字类的值,没带引号。
但实际上,正确的语句应该是
INSERT INTO userinfo (username, pwd, content) VALUES (‘a’, ‘b’, ‘c’);
所以你测试的
$query = 'INSERT INTO userinfo (username, pwd, content) VALUES ("username", "pwd", "content")'; 能正确执行。
最后问题的解决方法是:
$query="INSERTINTOuserinfo(username,pwd,content)VALUES('".$_POST['username']."','".$_POST['pwd']."','".$_POST['content'].")";
另外为了看起来舒服点,可以这么写:
$query=sprintf("INSERTINTOuserinfo(username,pwd,content)VALUES('%s','%s','%s);",$_POST['username'],$_POST['pwd'],$_POST['content']);
最后,你这种写法,有Sql注入的风险,从安全角度来讲是不可取的。所以应该这么写:
$query=sprintf("INSERTINTOuserinfo(username,pwd,content)VALUES(unhex('%s'),unhex('%s'),unhex('%s'));",bin2hex($_POST['username']),bin2hex($_POST['pwd']),bin2hex($_POST['content']));
C. mysql+php程序中sql语句中的引号使用方法,什么时候用双引号什么时候用单引号
这就要从双引号和单引号的作用讲起:
双引号里面的字段会经过编译器解释然后再当作HTML代码输出,但是单引号里面的不需要解释,直接输出。例如:
$abc='I love u';
echo $abc //结果是:I love u
echo '$abc' //结果是:$abc
echo "$abc" //结果是:I love u
所以在对数据库里面的SQL语句赋值的时候也要用在双引号里面SQL="select a,b,c from ..."
但是SQL语句中会有单引号把字段名引出来
例如:select * from table where user='abc';
这里的SQL语句可以直接写成SQL="select * from table where user='abc'"
但是如果象下面:
$user='abc';
SQL1="select * from table where user=' ".$user." ' ";对比一下
SQL2="select * from table where user=' abc ' "
我把单引号和双引号之间多加了点空格,希望你能看的清楚一点。
也就是把'abc' 替换为 '".$user."'都是在一个单引号里面的。只是把整个SQL字符串分割了。
SQL1可以分解为以下3个部分
1:"select * from table where user=' "
2:$user
3:" ' "
字符串之间用 . 来连接,这样能明白了吧。
D. php操作MySQL中单引号与怎么处理
花括号,花括号中既可以输出简单变量,也可以输出复杂变量,如数组、对象等;
1.$a = 'abcd';2.$b = array('aaa' => 'abcd', 'bbb' => array(12,34));3.echo "{$a}"; // 输出 abcd4.echo "{$b['aaa']}"; // 输出 abcd5.echo "{$b['bbb'][1]}"; // 输出 34
所以写的时候想偷懒就用花括号,不会出错;
但是在性能上,单引号的性能最好,因为单引号中的内容会直接被当成字符串,没其他的解析;而解析双引号的时候,会先判断双引号内有没有变量,有变量就把变量用变量值代替,最后再输出双引号内整个的内容;花括号就更不用说了,可以输出复杂的变量内容。
E. php mysql_query语句里为什么引用变量要加单引号,为什么有时直接用变量名也可以运行通过
你说的这个,不是PHP的范围了,属于mysql语法。加单引号和不加单引号区别很大,例如 key=select 和 key = 'select' ,前者执行会产生错误,你没出错的原因有可能是这样key=1和key='1' 这样mysql可以识别的 相同的处理方式。总之加引号不会错的,不加引号,有些情况会出错
F. 在PHP 和 MYSQL中 符号: ` 起到的是什么作用
这个很简单啊,不需要参考资料。这个在mysql语句中常用到。例如:select `id`,`name` from `user`;给查询的字段和表名加上这个符号,能提高sql查询效率。建议你写sql语句的时候,给这些都加上这个符号。还有就是如果你的表里字段含有关键字的,用这个符号包起来就不会报错啦。
G. PHP如何取得mysql字段值并记算时间
两种方式 :
1、可以直接用SQL 里的函数 sum() ;
如:"select sum(字段) as num from tab "; //sum 取该字段所有列的总和
2、用PHP函数 sum($array) ; //取数组中值的总和
当然 字段必须是int型的
H. php 加单引号后 就报MYSQL错误! 求解!
SELECT G.groupname,G.groupid,G.des,G.groupimg FROM dede_group_user AS U LEFT JOIN dede_groups AS G ON U.gid=G.groupid WHERE U.uid IN(2) AND U.isjoin=1 AND U.gid<>1\' LIMIT 0,6
/group/bbs.php?id=1' 这里多了一单引号,因为这里多了这个单引号,你的程序获取参数id时会将这个单引号一同获取到,所以,在放入你的sql语句中式,多了一个单引号,所以执行sql语句时会发生语法错误。
所以,在将获取到得变量放入sql语句中式,最好做一下处理,即:如果id是整形的话,最好转为整形在放入,同时也可以防止sql注入的发生。
I. php 把数据写入Mysql数据库里. 双引号被转成"了
这是被htmlspecialchars转义了,你出来的时候反转义一下htmlsepcailchars_decode()
J. php中的mysql函数的参数格式问题
给你找了些资料:
介绍的挺详细的:
mysql_fetch_array函数
--
从结果集中取得一行作为关联数组(是以你所搜索的字段作为的键名),或数字数组(也就是你所说的0,1,2,3...),或二者兼有
相关说明
array
mysql_fetch_array
(
resource
result
[,
int
result_type])
返回根据从结果集取得的行生成的数组,如果没有更多行则返回
false。
mysql_fetch_array()
是
mysql_fetch_row()
的扩展版本。除了将数据以数字索引方式储存在数组中之外,还可以将数据作为关联索引储存,用字段名作为键名。
如果结果中的两个或以上的列具有相同字段名,最后一列将优先。要访问同名的其它列,必须用该列的数字索引或给该列起个别名。对有别名的列,不能再用原来的列名访问其内容(本例中的
'field')。
还是看几个例子:
例子
1.
相同字段名的查询
select
table1.field
as
foo,
table2.field
as
bar
from
table1,
table2
有一点很重要必须指出,用
mysql_fetch_array()
并不明显
比用
mysql_fetch_row()
慢,而且还提供了明显更多的值。
mysql_fetch_array()
中可选的第二个参数
result_type
是一个常量,可以接受以下值:mysql_assoc,mysql_num
和
mysql_both。本特性是
php
3.0.7
起新加的。本参数的默认值是
mysql_both。
如果用了
mysql_both,将得到一个同时包含关联和数字索引的数组。用
mysql_assoc
只得到关联索引(如同
mysql_fetch_assoc()
那样),用
mysql_num
只得到数字索引(如同
mysql_fetch_row()
那样)。
注:
该函数返回的字段名是大小写敏感的。
例子
2.
mysql_fetch_array
使用
mysql_num
<?php
mysql_connect("localhost",
"mysql_user",
"mysql_password")
or
die("could
not
connect:
"
.
mysql_error());
mysql_select_db("mydb");
$result
=
mysql_query("select
id,
name
from
mytable");
while
($row
=
mysql_fetch_array($result,
mysql_num))
{
printf
("id:
%s
name:
%s",
$row[0],
$row[1]);
}
mysql_free_result($result);
?>
例子
3.
mysql_fetch_array
使用
mysql_assoc
<?php
mysql_connect("localhost",
"mysql_user",
"mysql_password")
or
die("could
not
connect:
"
.
mysql_error());
mysql_select_db("mydb");
$result
=
mysql_query("select
id,
name
from
mytable");
while
($row
=
mysql_fetch_array($result,
mysql_assoc))
{
printf
("id:
%s
name:
%s",
$row["id"],
$row["name"]);
}
mysql_free_result($result);
?>
例子
4.
mysql_fetch_array
使用
mysql_both
<?php
mysql_connect("localhost",
"mysql_user",
"mysql_password")
or
die("could
not
connect:
"
.
mysql_error());
mysql_select_db("mydb");
$result
=
mysql_query("select
id,
name
from
mytable");
while
($row
=
mysql_fetch_array($result,
mysql_both))
{
printf
("id:
%s
name:
%s",
$row[0],
$row["name"]);
}
mysql_free_result($result);
此例中的"while
($row
=
mysql_fetch_array($result,
mysql_both))"
也可以将括号中的第二个参数去掉,既等价于:
"while
($row
=
mysql_fetch_array($result))"
?>
---------------------------------------------------------------------
仔细看看这些
相信对你有所帮助