dongmaopan5738 2013-11-27 04:51
浏览 34
已采纳

PDO执行时插入错误

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条回答 默认 最新

  • dongshi1880 2013-11-27 05:04
    关注

    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.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?