Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP和PDO问题_Php_Pdo - Fatal编程技术网

PHP和PDO问题

PHP和PDO问题,php,pdo,Php,Pdo,所以我是PDO的初学者,在做一些看似简单的事情时遇到了困难。我无法更新我的表,而且它不会给我带来任何错误。看一看: <?php $host = 'localhost'; $dbname = 'postGal'; $user = 'user'; $pass = 'pass'; $DB = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); $DB->setAttribute( P

所以我是PDO的初学者,在做一些看似简单的事情时遇到了困难。我无法更新我的表,而且它不会给我带来任何错误。看一看:

<?php

  $host   = 'localhost';
  $dbname = 'postGal';
  $user   = 'user';
  $pass   = 'pass';

  $DB = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);  
  $DB->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );   

  catch(PDOException $e) {  
    echo "Reported Error";  
    file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);  
  }

  class person {  
    public $f_name;  
    public $l_name;   

    function __construct($f,$l) {  
        $this->f_name = $f;  
        $this->l_name = $l;  
    }  
  }  

  $person = new person('John','Doe');  

  $STMT = $DB->("INSERT INTO users (f_name, l_name) value (:f_name, :l_name)");  
  $STMT->execute((array)$person); 

?>


此外,我知道表和所有内容都正常工作,因为我可以使用mysql或mysqli执行相同的语句。谢谢

您必须接受可能在try块中抛出异常的代码块,以捕获抛出的异常

它还必须在insert语句中指出值而不是值

你也完全错用了事先准备好的陈述。有关一些简单示例,请参阅手册。例如,您必须在某个时刻调用prepare方法,而您的数组强制转换非常奇怪,不确定您将执行什么操作


我在这里也闻到了巨魔的气味。

也许
catch
想要成为
设置错误处理程序
$DB->(“INSERT
忽略了
prepare
方法。最后,我认为您不能像这样将对象强制转换为数组。也许您希望
获取对象变量
,并将其操纵成所需的数组(以冒号开头的键)但是,对象的意义是什么?只使用数组。

我看不出有任何理由认为这是一个trolling尝试。这只是一个糟糕的代码。为什么会有否决票?尽管我说它太坏了,看起来像是一个trolling尝试,但我确实修复了它的大部分并给出了建议。OP可能不是一个trolling,但你之前的答案有点苛刻侧边。请保持良好。嗯……没有巨魔。只是按照教程做一些修改。