php - 我的 PDO 语法有什么错误

标签 php mysql pdo

抱歉,我想不出更好的标题。 :-(

这是我第一次尝试使用 PDO。我引用了 php.net 的语法。 数据库是空的,看起来像这样:

Field         Type       Null   Key Default Extra
id            int(11)    NO     PRI NULL    auto_increment
query_string  text       NO         NULL    
exclude_count tinyint(4) NO         NULL    

运行代码应该在页面表中创建或更新一行,数据库不变。

这是我的代码和输出:

$dbuser='abc';
$dbpass='password';

$connection = new PDO('mysql:host=127.0.0.1;dbname=mydb', $dbuser, $dbpass);
if(!$connection){echo '<!-- DB CONNECTION ERROR -->';}else{echo '<!-- DB CONNECTION CONFIRMED -->';}
$connection->beginTransaction();
$prep_idcheck=$connection->prepare("SELECT id FROM pages WHERE query_string = :origqs");
$prep_idcheck->bindParam(':origqs', $orig_QS);
$row=$prep_idcheck->fetch();

if($row)
  {
    echo '<!-- EXDB: We have dealt with this one before. -->';
    $existing=true;
  }
else
  {
    echo '<!-- EXDB: This is a new one. -->';
    $existing=false;
  }

if($existing)
  {
    $prep_report_excounts=$connection->prepare("UPDATE pages SET exclude_count = :exclude_count WHERE query_string = :origqs");
  }
else
  {
    $prep_report_excounts=$connection->prepare("INSERT INTO pages (exclude_count, query_string) VALUES (:exclude_count,:origqs)");
  }
$prep_report_excounts->bindParam(':origqs', $orig_QS);
$prep_report_excounts->bindParam(':exclude_count', $exclude_count);
$status=$prep_report_excounts->execute();
if(!$status)
  {
   $error=$connection->errorInfo();
    echo'<!-- The statement did not execute '."\n";
    var_dump($error);
    echo'-->';
  }
$connection->commit();
?>

输出

<!-- DB CONNECTION CONFIRMED --><!-- EXDB: This is a new one. --><!-- The statement did not execute 
array(1) {
  [0]=>
  string(5) "00000"
}
-->

最佳答案

您缺少 $prep_idcheck 上的 execute()

$prep_idcheck=$connection->prepare("SELECT id FROM pages WHERE query_string = :origqs");
$prep_idcheck->bindParam(':origqs', $orig_QS);
// Missing execute();
$prep_idcheck->execute();
$row=$prep_idcheck->fetch();

关于php - 我的 PDO 语法有什么错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16347359/

相关文章:

php - mysql_fetch_array() 期望参数 1 是资源问题

php - 为什么我修改 php.ini 文件以启用 extension=php_pdo.dll、extension=php_pdo_mysql.dll 后会回显 "pdo support is NOT loaded"?

mysql - 获取表中不可用的数据

php - pdo_odbc的配置需要文件在/usr/local/但是没有文件

php - 在 Laravel 5.6 中传递的 Vue Prop

php - SQL选择查询使用变量来获取行

mysql - mySQL 中的条件查询

php - Foreach 循环内有两个查询

PHP Firebird API : php_interbase or PDO?

php - PDO 电子邮件验证