无法通过PDO INSERT到mysql

时间:2014-06-23 18:01:33

标签: php mysql web pdo

在最后一天左右,我一直在反对这个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;
?>

任何帮助将不胜感激。感谢。

2 个答案:

答案 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());
}