首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP - SQL - intval不工作-错误

PHP - SQL - intval不工作-错误
EN

Stack Overflow用户
提问于 2016-08-10 05:43:42
回答 2查看 106关注 0票数 1

所以我是新来的,所以我不是很好。所以很抱歉我的英语不好,但我帮你,你能帮我!

这是我的代码

代码语言:javascript
复制
$sql = "INSERT INTO bestellung (userID, name, email, item, menge, total)
VALUES (" . intval($row['userID'],'".$_POST["name"]."','".$_POST["email"]."','".$_POST["item"]."','".$_POST["menge"]."','".$_POST["total"]."')";

这不是完整的代码!在invtal中有一个错误,但我不知道错误是什么!

所以我帮你你也能帮我!谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-08-10 09:02:39

你在评论中说你在使用PDO。这为您提供了一种更轻松地编写代码的方法,从而避免使用对齐引号和圆括号出现令人沮丧的问题。

下面是我将如何编写此代码:

代码语言:javascript
复制
$paramDefaults = array("userID"=>null, "name"=>null, "email"=>null,
    "item"=>null, "menge"=>null, "total"=>null);
$params = array_merge($paramDefaults, array_intersect_key($_POST, $paramDefaults));

$sql = "INSERT INTO bestellung SET userID = :userID, name = :name,
    email = :email, item = :item, menge = :menge, total = :total";    
$stmt = $pdo->prepare($sql);
$stmt->execute($params);

看看这有多简单?不需要费力地盯着引号中的引号。不需要考虑在SQL查询中插入不安全的post变量。

您甚至可以使用非空值设置$paramDefaults数组,这样,如果web请求缺少其中一个参数,插入操作就不会中断。

票数 5
EN

Stack Overflow用户

发布于 2016-08-10 05:54:34

你忘记了关闭括号intval($row['userID'].See修复如下:

代码语言:javascript
复制
$sql = "INSERT INTO bestellung (userID, name, email, item, menge, total)
VALUES (" .intval($row['userID']),'".$_POST["name"]."','".$_POST["email"]."','".$_POST["item"]."','".$_POST["menge"]."','".$_POST["total"]."')";

sql 1:多准备一个thing.Use 将避免thing.Use注入:

sql 2SQLEDIT:参见下面的参数化代码:

代码语言:javascript
复制
try {
    $dbh = new PDO("mysql:host=$hostname;dbname=****_kevin",$username,$password);

    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line


$stmt = $dbh->prepare("INSERT INTO bestellung (name, email, item, menge, total)
VALUES (:name,:email,:item,:menge,:total)");

    $stmt->execute(array('name' => $_POST['name'],
                         'email' => $_POST['email'],
                         'item'=> $_POST['item'],
                         'menge'=> $_POST['menge'],
                         'total'=> $_POST['total']));

    $dbh = null;
    } catch(PDOException $e) {
    echo $e->getMessage();
   }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38860923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档