PDO Insert error on execute

谁说胖子不能爱 提交于 2020-01-11 14:41:28

问题


I can't find my mistake, I'm getting Execute fail error

$db = new PDO('mysql:host=localhost; dbname=xxxxxx', 'yyyyyy', 'zzzzzz', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")) or die ("fail");;
$query = "INSERT INTO multiTicker (mtgox,btcstamp,btce,btcchina,myDateTime) VALUES (:mtgox,:btcstamp,:btce,:btcchina,:myDateTime)";
$st = $db->prepare($query) or die ("Query fail");
$st->execute(array(':mtgox' => $mtgox,
               ':btcstamp' => $btcstamp,
               ':btce' => $btce,
               ':btcchina' => $btcchina,
               ':myDateTime' => $myDateTime)) or die ("Execute fail");

回答1:


Looks like your DSN is incorrect (you have a space in it). Try this PDO constructor and stop using or die()!

$db = new PDO('mysql:host=localhost;dbname=xxxxxx;charset=utf8', 'yyyyyy', 'zzzzzz', array(
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_EMULATE_PREPARES   => false,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC));

$query = "INSERT INTO multiTicker (mtgox,btcstamp,btce,btcchina,myDateTime) VALUES (:mtgox,:btcstamp,:btce,:btcchina,:myDateTime)";
$st = $db->prepare($query);
$st->execute(array(
    ':mtgox' => $mtgox,
    ':btcstamp' => $btcstamp,
    ':btce' => $btce,
    ':btcchina' => $btcchina,
    ':myDateTime' => $myDateTime
));

You don't have to set the default fetch mode to PDO::FETCH_ASSOC but I find it's handy.



来源:https://stackoverflow.com/questions/20234175/pdo-insert-error-on-execute

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!