PHP - SQL - intval不起作用 - 错误

时间:2016-08-09 21:43:42

标签: php mysql insert

所以我是新人,所以我不太好。 我的英语不好,但我帮助你,我可以帮忙!

这是我的代码

$sql = "INSERT INTO bestellung (userID, name, email, item, menge, total)
VALUES (" . intval($row['userID'],'".$_POST["name"]."','".$_POST["email"]."','".$_POST["item"]."','".$_POST["menge"]."','".$_POST["total"]."')";

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

所以我帮助你可以帮助我! 感谢。

2 个答案:

答案 0 :(得分:5)

你在评论中说你正在使用PDO。这为您提供了一种更轻松地编写代码的方法,以避免使用平衡的引号和括号来解决问题。

以下是我编写此代码的方法:

$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);

看看这有多容易?不需要紧盯着引号内的引号。无需考虑将不安全的post变量插入到SQL查询中。

您甚至可以使用非空值设置$paramDefaults数组,因此如果Web请求缺少其中一个参数,则INSERT不会中断。

答案 1 :(得分:1)

您忘记关闭括号% Caption on top % https://tex.stackexchange.com/a/14862/4762 \usepackage{floatrow} \floatsetup[figure]{capposition=top} \floatsetup[table]{capposition=top} 。请参阅下面的修复:

intval($row['userID']

编辑1 :还有一件事。使用sql prepared statement.It会避免sql注入:

编辑2 :请参阅下面的参数化sql代码:

$sql = "INSERT INTO bestellung (userID, name, email, item, menge, total)
VALUES (" .intval($row['userID']),'".$_POST["name"]."','".$_POST["email"]."','".$_POST["item"]."','".$_POST["menge"]."','".$_POST["total"]."')";