0
カラムデータ型が小数点以下(12,2)のmysqlデータベースに10進数値を格納します。PDOを使用してmysqlにlong decimalを格納する
10000と入力しても問題ありません。しかし、100000を保存したい場合、テーブルは値を格納していません。
public function __construct($type, $host, $databaseName, $username, $password)
{
parent::__construct($type.':host='.$host.';dbname='.$databaseName.';charset=utf8', $username, $password);
$this->exec('SET CHARACTER SET utf8');
if ($this->debug) {
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
}
}
/**
* Enable/disable debug for database queries.
* @param $debug boolean TRUE to enable debug, FALSE otherwise.
*/
public function debug($debug)
{
$this->debug = $debug;
}
私は同じ値を挿入することができますようmysqlの端から誤りがない -
私のコードは、デバッグ出力が
Insert prepared
Insert executed
object(PDOStatement)#32 (1) { ["queryString"]=> string(364) "INSERT INTO donation (`cause_id`, `countrytospend`, `donation_amt`, `donation_date`, `donation_method`, `donation_prompt`, `donation_ref`, `donation_type`, `gift_aid`, `giftaidyesno`, `user_id`) VALUES (:cause_id, :countrytospend, :donation_amt, :donation_date, :donation_method, :donation_prompt, :donation_ref, :donation_type, :gift_aid, :giftaidyesno, :user_id)" }
エラー処理である
$query = $this->db->insert('donation', array(
'donation_ref' => $unique,
'user_id' => $data['donorid'],
'donation_amt' => $data['amount'],
'cause_id' => $data['causes_i_want_to_support'],
'countrytospend' => $data['country_to_spend'],
'donation_type' => $data['donation_type'],
'donation_prompt' => $data['donate_prompt'],
'gift_aid' => $data['total'],
'donation_date' => date('Y-m-d', strtotime($data['donation_date'])),
'giftaidyesno' => $ga,
'donation_method' => $data['donation_method']
));
public function insert($table, array $data)
{
ksort($data);
$fieldNames = implode('`, `', array_keys($data));
$fieldValues = ':' . implode(', :', array_keys($data));
$sth = $this->prepare("INSERT INTO $table (`$fieldNames`) VALUES ($fieldValues)");
foreach ($data as $key => $value) {
$sth->bindValue(":$key", $value);
}
$sth->execute();
echo print_r($sth->errorInfo());
}
ですテーブル内で手動でしかし、私はPDOを介してそれを格納しようとしているとき、エラーはありませんし、同様に行を格納していません。
ご協力いただきまして誠にありがとうございます。レコードの
挿入を実行した後でも、mysqlエラーをチェックしない場合もあります。この方法では、エラーがあったかどうかわからなくても... – Shadow
@Shadow私はコードを更新しました。しかし、実際にはエラーは発生していません。 –
第1位でエラーを投げるようにpdoを構成しましたか? – Shadow