欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2024-01-30 19:39:16
...
请教大家一个问题,用单入口方式写的一个注册类

$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输出看看是什么

$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)类型的