嘿,伙计们,我希望你的帮助关于下面的代码,我很新的php和sql,我正试图盲目这些值的订单检查过程。有多个页面需要从....
获取信息我已经看了这个代码几个小时了,我无法找到我出错的地方…这可能是因为我真的不确定我需要在哪里寻找解决这个问题。任何帮助或建议都会很有帮助!
function writeOrderToDatabase(){
// open database connection
include 'includes/connection.php';
// store order date in Australian format for printouts etc
$_SESSION['orderDate'] = date('d-m-Y');
try{
// create our sql insert orders statement
$sql = "INSERT INTO orders SET orderNbr=: orderNbr,custNbr=:custNbr,orderDate=:orderDate, OrderNetValue=:OrderNetValue,deliverTo = :deliverTo,
deliveryAddress1 = :deliveryAddress1, deliveryAddress2 = :deliveryAddress2, deliverySuburb = :deliverySuburb,
deliveryState = :deliveryState, deliveryPostCode = :deliveryPostCode, deliverySuburb = :deliverySuburb, deliveryState = :state, deliveryPostCode = :deliveryPostCode, deliveryInstructions = :deliveryInstructions, shippingValue=:shippingValue,
paymentType=:paymentType, paymentRef=:paymentRef;";
// prepare the statement
$statement = $pdo->prepare($sql);
$orderNbr = 0;
// bind the values
$statement->bindValue(':orderDate', date('Y-m-d'));
$statement->bindValue(':custNbr', $_SESSION['custNbr']);
$statement->bindValue(':dispatchDate', $_SESSION['dispatchDate']);
$statement->bindValue(':deliveryDate', $_SESSION['deliveryDate']);
$statement->bindValue(':OrderNetValue', $_SESSION['OrderNetValue']);
$statement->bindValue(':deliverTo', $_SESSION['deliverTo']);
$statement->bindValue(':deliveryAddress1', $_SESSION['deliveryAddress1']);
$statement->bindValue(':deliveryAddress2', $_SESSION['deliveryAddress2']);
$statement->bindValue(':deliverySuburb', $_SESSION['deliverySuburb']);
$statement->bindValue(':deliveryState', $_SESSION['deliveryState']);
$statement->bindValue(':deliveryPostCode', $_SESSION['deliveryPostCode']);
$statement->bindValue(':deliveryInstructions', $_SESSION['deliveryInstructions']);
$statement->bindValue(':shippingValue', $_SESSION['shippingValue']);
$statement->bindValue(':paymentType', $_SESSION['paymentType']);
$statement->bindValue(':paymentRef', $_SESSION['paymentRef']);
$statement->bindValue(':sellingPrice', $_SESSION['sellingPrice']);
$statement->bindValue(':newQtyOnHand', $_SESSION['newQtyOnHand']);
// execute the statement
$success = $statement->execute();
} // end try
catch (PDOException $e) {
echo 'Error adding order: ' . $e->getMessage();
exit();
} // end catch
// test the result and get order nbr just created or display appropriate message
if ($success) {
echo $sql = 'SELECT orderNbr FROM orders ORDER BY orderNbr';
foreach ($conn->query($sql) as $row) {
print $row['orderNbr'] . "'t";
}
}
else {
die("<p>Unable to retreive Order Nbr </p>");
}
// read cart and insert orderedItem record(s) and update stock on hand in product records
foreach($_SESSION['cart'] as $prodNbr => $value) {
// store required details in variables
$qtyOrdered = $_SESSION['cart'][$prodNbr]['qtyOrdered'];
$qtyOnHand = $_SESSION['cart'][$prodNbr]['qtyOnHand'];
$sellingPrice = $_SESSION['cart'][$prodNbr]['price'];
try {
// create orderedItem table sql insert statement
$sql = "INSERT INTO orderedItem SET orderNbr=:custNbr,prodNbr=: prodNbr, qtyOrdered=:qtyOrdered,sellingPrice = :sellingPrice;";
} // end try
catch (PDOException $e) {
echo 'Error adding orderedItem: ' . $e->getMessage();
exit();
} // end catch
// test the result and display appropriate message
if (!$success) {
die("<p>Unable to execute the orderedItem table insert</p>");
}
// create new quantity on hand value for the product record
$newQtyOnHand = $qtyOnHand - $qtyOrdered;
try {
// create product table sql update statement
$sql="UPDATE product SET prodNbr= :prodNbr,prodName= :prodName,price= :price,qtyOnHand= :qtyOnHand,description= :description, photo= :photo,thumbNail= :thumbNail ,suppCode= :suppCode ;";
} // end try
catch (PDOException $e) {
echo 'Error updating product qtyOnHand: ' . $e->getMessage();
exit();
} // end catch
// test the result and display appropriate message
if (!$success) {
die("<p>Unable to execute the product table update</p>");
}
} // end of foreach
} // end of function
此处:
$statement->bindValue(':dispatchDate', $_SESSION['dispatchDate']);
$statement->bindValue(':deliveryDate', $_SESSION['deliveryDate']);
$statement->bindValue(':sellingPrice', $_SESSION['sellingPrice']);
$statement->bindValue(':newQtyOnHand', $_SESSION['newQtyOnHand']);
这些绑定在查询中不存在。
,
orderNbr=: orderNbr
应为
orderNbr = :orderNbr
请注意您也没有绑定它。此外,您在查询中有两个以下参数:
deliveryState = :state
deliveryState = :deliveryState
deliveryPostCode = :deliveryPostCode
deliveryPostCode = :deliveryPostCode
您首先有一个坏占位符令牌:orderNbr=: orderNbr
需要orderNbr=:orderNbr
;注意空格。其次,即使这是正确的,我也没有看到你在任何地方绑定:orderNbr
。
我认为,虽然订单号应该是一个自动递增的整数字段,如果是这种情况,你不应该包括它在您的插入