在最后一天左右,我一直在反对这个PHP插入代码。我似乎无法找到问题,并且在完成两次完整的代码后它仍然存在。这个问题非常简单,它不会插入任何内容,我通过简单的直接输入变量值来减少可能性,而不是使用GET通过JS从HTML中获取它们。也许这里有人可以发现正在发生的事情。我知道PDO肯定在工作,因为我能够从mysql表中获取信息。
<?php
$tbl = 'transactions';
$acc = 'blah1';
$date = '2014-07-01';
$cp = 'counterparty';
$ctg = 'category';
$dbt = 1.00;
$crd = 0.00;
$user = "root";
$pass = #######; // Note: the password is actually in the file on my side.
try {
$con = new PDO("mysql:host=localhost;dbname=budget;charset=utf8",$user,$pass);
$con -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
$sql = $con -> prepare("INSERT INTO transactions VALUES (:account, :date, :counterparty, :category, :debit, :credit)");
$sql -> bindValue(':account', $acc, PDO::PARAM_STR);
$sql -> bindValue(':date', $date, PDO::PARAM_STR);
$sql -> bindValue(':counterparty', $cp, PDO::PARAM_STR);
$sql -> bindValue(':category', $ctg, PDO::PARAM_STR);
$sql -> bindValue(':debit', strval($dbt), PDO::PARAM_STR);
$sql -> bindValue(':credit', strval($crd), PDO::PARAM_STR);
$sql -> execute();
$dbh = NULL;
?>
任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
我在帖子的评论中回答了这个问题,但是我会将其作为答案发布,以便更加明显:
代码现在正常工作,我将其添加到JS中: xmlhttp.onreadystatechange = function(){if(xmlhttp.readyState == 4&amp;&amp; xmlhttp.status == 200){}}试图查看正在发生的事情 try-catch块,突然代码开始工作。我不是 我明白为什么这突然解决了这个问题?有人可以 小心解释。
答案 1 :(得分:0)
而不是:
$ sql = $ con - &gt;准备(“插入交易价值(:帐户,:日期,:交易对手,:类别,:借记,:贷方)”);
尝试这种方式:
$ sql = $ con - &gt;准备(“INSERT INTO交易(账户,日期,对手,类别,债务,信用)价值(:账户,:日期,:交易对手,:类别,:借记,:信用)”;
要检查的事项:
1)检查表定义中的确切字段名。
2)检查表中声明的数据类型。 (在您的代码中,您尝试将字符串插入所有字段)
3)使用Try,Catch块
try
{
// Your code
}
catch (PDOException $pe)
{
$con->rollBack();
die($pe->getMessage());
}