我正在尝试使用MySQLI和PHP更新表格中的信息。我知道数据正在进入更新部分,因为我在很多地方都使用print_r()
和var_dump()
来验证某些内容,但表格中没有任何变化。以下是我对我的更新:使用MySQLi和PHP更新表格
$conn->query("update inventory set cost = $cost, csmt = $csmt,
hold = {$data[$n]['hold']}, commission_level = " . $cLvl .",
date_process = '$today' where sku = {$data[$n]['sku']}");
如果我只加成本则该表将更新,但如果我改变csmt
或hold
领域,没有得到更新。
如果我硬编码MySQL查询中的值,它工作正常。所以看起来PHP代码存在一些问题。
任何人都可以看到我在哪里出错吗?
$today = date('Y-m-d');
$data = json_decode($_POST['data'], true);
foreach ($data as $value) {
// check to see if it was taken off hold
if ($data[$n]['cost']> 0 || $data[$n]['csmt'] !== 0) {
//update commission information
//gather data
$result = $conn->query("SELECT book_code FROM book_type WHERE book_type_id = {$data[$n]['booktype']}");
if ($result) { $bookType = $result->fetch_assoc(); }
$result = $conn->query("SELECT book_type_3 FROM feature WHERE feature_id = {$data[$n]['featureid']}");
if ($result) { $bookType3 = $result->fetch_assoc(); }
$result = $conn->query("SELECT condition_id FROM defect WHERE defect_id = {$data[$n]['defect']}");
if ($result) { $cId = $result->fetch_assoc(); }
$result = $conn->query("select source_id from inventory where sku = {$data[$n]['sku']}");
if ($result) { $buyer = $result->fetch_assoc(); }
$result = $conn->query("SELECT class_code, notes, price, usedbuying_price FROM follette_title WHERE isbn13 = {$data[$n]['isbn']}");
if ($result) {
$follett = $result->fetch_assoc();
$follett_price = $follett['usedbuying_price'];
}
if ($data[$n]['cost'] == 0 || $bookType3['book_type_3'] == "DMG")
{
$cLvl = null;
}
elseif ($bookType['book_code'] == "IE" || $bookType['book_code'] == "AIE")
{
$cLvl = 3;
}
elseif ($cId['condition_id'] == 1 || $cId['condition_id'] == 2 || $cId['condition_id'] == 3 || $cId['condition_id'] == 4 || $follett['class_code'] == "D" || strpos($follett['notes'],"(T)") == true)
{
$cLvl = 2;
}
elseif ($cId['condition_id'] == 5)
{
$cLvl = 1;
}
if ($data[$n]['csmt'] == 0) {
//get buyer commission rate
if (!empty($cLvl))
{
$result = $conn->query("SELECT lvl" . $cLvl . " FROM buyers WHERE buyer_id = {$buyer['source_id']}");
//echo"SELECT lvl" . $cLvl . " FROM buyers WHERE buyer_id = {$buyer['source_id']}"; die;
if ($result) { $comRate = $result->fetch_assoc(); } //print_r($comRate); die;
}
//calculate final cost
if (!empty($comRate['lvl'.$cLvl]))
{
$cost = ($data[$n]['cost']) + (($data[$n]['cost']) * $comRate['lvl'.$cLvl]);
}
}
$csmt = $data[$n]['csmt'];
$conn->query("update inventory set cost = $cost, csmt = $csmt,
hold = {$data[$n]['hold']}, commission_level = " . $cLvl .",
date_process = '$today' where sku = {$data[$n]['sku']}");
这一切都取决于这些变量的值(类型)是什么,以及mysql期望它们是什么。 – Matt 2012-08-03 17:50:33
@Matt传递给mysql的所有值都是整数(例如,10.00代价,1代表csmt,0代表hold),并且mysql正在寻找double(cost)tinyint(csmt)和int(hold) – Jim 2012-08-03 17:55:12