我无法使INSERT语句生效。我知道问题是我是如何绑定参数的。在添加参数绑定之前,INSERT正在工作。
$inventoryQuery = "INSERT INTO inventory (Whse, Product, Description,
QtyOnHand, QtyUnavail, BinLoc1, BinLoc2, GLCost, OnhandTotalValue,
UnavailTotalValue, GrandTotalValue)
VALUES ('?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?');";
// execute INSERT statement
$conn = $GLOBALS['conn'];
$stmt = $conn->prepare($inventoryQuery);
$stmt->bindParam(1, $sqlV[0]);
$stmt->bindParam(2, $sqlV[1]);
$stmt->bindParam(3, $sqlV[2]);
$stmt->bindParam(4, $sqlV[3]);
$stmt->bindParam(5, $sqlV[4]);
$stmt->bindParam(6, $sqlV[5]);
$stmt->bindParam(7, $sqlV[6]);
$stmt->bindParam(8, $sqlV[7]);
$stmt->bindParam(9, $sqlV[8]);
$stmt->bindParam(10, $sqlV[9]);
$stmt->bindParam(11, $sqlV[10]);
$stmt->execute();
使用var_dump($ stmt)输出:
对象(PDOStatement对象)[2] public'queryString'=> string'INSERT INTO inventory(Whse,Product,Description,QtyOnHand,QtyUnavail,BinLoc1,BinLoc2,GLCost,OnhandTotalValue,UnavailTotalValue,GrandTotalValue) 价值观(?,?,?,?,?,?,?,?,?,?,?);' (长度= 192)
我已经看过并尝试了很多方法来处理绑定参数。现在我的头在游泳。如果你能提供解决方案和解释,我会很高兴。
所提供的所有信息的解决方案:
try{
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$inventoryQuery = "INSERT INTO inventory ($sqlField)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
// execute INSERT statement
$conn = $GLOBALS['conn'];
$stmt = $conn->prepare($inventoryQuery);
$stmt->bindValue(1, $sqlV[0]);
$stmt->bindValue(2, $sqlV[1]);
$stmt->bindValue(3, $sqlV[2]);
$stmt->bindValue(4, ((int) ((float) $sqlV[3])));
$stmt->bindValue(5, ((int) ((float) $sqlV[4])));
$stmt->bindValue(6, $sqlV[5]);
$stmt->bindValue(7, $sqlV[6]);
$stmt->bindValue(8, ((float) $sqlV[7]));
$stmt->bindValue(9, ((float) $sqlV[8]));
$stmt->bindValue(10, ((float) $sqlV[9]));
$stmt->bindValue(11, ((float) $sqlV[10]));
$stmt->execute();
}
catch(PDOException $ex){
var_dump($ex);
}
感谢所有帮助过的人!
答案 0 :(得分:2)
这段代码:
('?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?')
删除引号
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
答案 1 :(得分:2)
我将使用不正确的列类型。尝试在try-catch块中执行您的执行,并确保SQL不会抛出任何错误。如果是,它可能会向您显示您需要做什么。
以下是一个例子:
try
{
$stmt->execute();
}
catch (PDOException $ex)
{
// log this object or just the error messages
log($ex->getMessage()); // Assuming you have some sort of global logger set up.
}
P.S。您可以在查询字符串中删除分号。在最后不应该伤害任何东西,但如果你在它之后添加任何东西,它将提前终止你的陈述。