Home > Backend Development > PHP Tutorial > 单入口注册模块组合sql语句的一个小问题

单入口注册模块组合sql语句的一个小问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-20 12:30:24
Original
857 people have browsed it

请教大家一个问题,用单入口方式写的一个注册类

$uname=$_POST['uname'];
$pwd=md5($_POST['pwd']);
//组合sql
$sql="insert into user(username,password) values($uname,$pwd)";
 M()->exec($sql);

$sql这句插入数据有问题,$uname和$pwd都取得值了.我书写的哪块错误了,双引号不是直接能解析变量的吗?
//我改成这种直接插入没问题$sql="insert into user(username,password) values('xiaozhang','34345')";
$sql 我改成 $sql="insert into user(username,password) values(".$uname.",".$pwd.")"; 也不行,哪里出错了,应该怎么写.


回复讨论(解决方案)

我的调试方法, 先去数据库写一条插入语句,执行成功后,按照你写的语句去拼凑php这边的表达式就行了 

$sql="insert into user(username,password) values('$uname','$pwd')";
字符串是需要用引号括起的,否则会被误解

$sql="insert into user(username,password) values(‘".$uname."’,‘".$pwd."’)"; 出错的时候可以把sql输出看看是什么
Copy after login

$sql="insert into user(username,password) values('$uname','$pwd')";
字符串是需要用引号括起的,否则会被误解



$uname 不是变量吗,为啥用单引号括起来.php中单引号不是不解析变量的吗?


$sql="insert into user(username,password) values('$uname','$pwd')";
字符串是需要用引号括起的,否则会被误解



$uname 不是变量吗,为啥用单引号括起来.php中单引号不是不解析变量的吗?

如果你uname定义为varchar,不家引号,sql会报错的。



$sql="insert into user(username,password) values('$uname','$pwd')";
字符串是需要用引号括起的,否则会被误解



$uname 不是变量吗,为啥用单引号括起来.php中单引号不是不解析变量的吗?

如果你uname定义为varchar,不家引号,sql会报错的。

我数据库定义的char(20)类型的
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template