php – mysqli插入错误语法错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – mysqli插入错误语法错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1712字,纯文字阅读大概需要3分钟。
内容图文
我知道很多人偶尔会遇到同样的错误但是我已经看过所有以前的答案和我的代码而且我已经尝试使用和不使用反引号
这是我目前的代码
我也尝试过$var以及$var但是相同
if(!empty($_POST['email'])){
$date = date('dmY'); #Todays Date
$ip = str_replace('.','',$_SERVER['REMOTE_ADDR']); #Visitor IP
$verify = md5($date.$ip); #MD5 ENCRYPT THE 2 VALUES
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$email = $_POST['email'];
$password = md5($_POST['password']);
$link = mysqli_connect($dbh,$dbu, $dbp, $dbn);
$query = mysqli_query($link, "INSERT INTO `users` (`email`,`fname`,`lname`,`verify`,`password`,`joined`)
VALUES($email,$fname,$lname,$verify,$password,$date)");
if($query){
echo "inserted";
}
else {
echo mysqli_error($link);
}
表中还有其他列,但是我只想为其余列添加上述列,最初可以使用默认值
我一直在看这段代码,现在我无法发现我的问题,我知道它的傻事
解决方法:
将变量添加到SQL查询中最容易出错的方法是通过预准备语句添加它.
因此,对于您运行的每个查询,如果要使用至少一个变量,则必须用占位符替换它,然后准备查询,然后执行它,分别传递变量.
首先,您必须更改查询,添加占位符代替变量.您的查询将变为:
$sql = "INSERT INTO users (fname, lname) VALUES (?, ?)";
然后,您将必须准备它,绑定变量并执行:
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "ss", $fname, $lname);
mysqli_stmt_execute($stmt);
如您所见,它只是三个简单的命令:
> prepare()您使用占位符发送查询
> bind_param您发送带有类型的字符串(“s”表示字符串,您可以将它实际用于任何类型),而不是实际变量.
>并执行()
这样,您始终可以确保您添加到查询中的数据不会导致单个SQL语法错误!作为奖励,这段代码也是针对SQL注入的防弹!
理解简单地在变量周围添加引号是不够的,并且最终会导致无数问题,从语法错误到SQL注入,这一点非常重要.另一方面,由于预处理语句的本质,它是一种防弹解决方案,无法通过数据变量引入任何问题.
内容总结
以上是互联网集市为您收集整理的php – mysqli插入错误语法错误全部内容,希望文章能够帮你解决php – mysqli插入错误语法错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。