Php PDO更新挑战

Php PDO更新挑战,php,mysql,pdo,Php,Mysql,Pdo,因此,我在mysql中构建了一个应用程序,在数据库中更新记录时遇到了挑战。每个人都更愿意告诉我应该使用PDO。 因此,我决定开始学习PDO连接和查询字符串以及使用prep STMT的实践,而不是争吵 无论如何,在我的实践和教程中,我可以毫无挑战地从数据库中提取和解析信息。但是当涉及到更新或插入新记录时,没有任何内容被插入,我也找不到不插入的原因 最初,我有一个表单发布到变量,但这不起作用 所以我硬编码了变量,但仍然不起作用 我需要一些帮助。。。。有人能看到这个insert php脚本有什么问题吗

因此,我在mysql中构建了一个应用程序,在数据库中更新记录时遇到了挑战。每个人都更愿意告诉我应该使用PDO。 因此,我决定开始学习PDO连接和查询字符串以及使用prep STMT的实践,而不是争吵

无论如何,在我的实践和教程中,我可以毫无挑战地从数据库中提取和解析信息。但是当涉及到更新或插入新记录时,没有任何内容被插入,我也找不到不插入的原因

最初,我有一个表单发布到变量,但这不起作用 所以我硬编码了变量,但仍然不起作用

我需要一些帮助。。。。有人能看到这个insert php脚本有什么问题吗

<?php 
$user="111";
$pass="111";
$database="111";
$host="111";
$odb = new PDO("mysql:host=$host;dbname=$database", $user, $pass);

$event='Special Speaker';
$descript='We have special speakers comming on tuesday night';
$sp1='Speaker Mr.A';
$sp2='Speaker Mr.B';
$date='5-5-15';
$created = '5-5-15';
$id=7;

$stmt=$odb->Prepare("INSERT INTO events(ID,Event,Descript,Sp1,Sp2,Created,Date)
        VALUES (:ID,:Event,:Descript,:Sp1,:Sp2,:Created,:Date");

$stmt->bindParam(':ID',$id);
$stmt->bindParam(':Event',$event);
$stmt->bindParam(':Descript',$descript);
$stmt->bindParam(':Sp1',$sp1);
$stmt->bindParam(':Sp2',$sp2);
$stmt->bindParam(':Created',$created);
$stmt->bindParam(':Date',$date);
$stmt->execute(); 


?>

  • 您可能必须指定您的ID是一个int,如下所示:
    $stmt->bindParam(':carries',$carries,PDO::PARAM_int)
  • 如果是Identity/Primary列和/或是自动递增的,则数据库可能会阻止您在该表中插入ID

  • 启用PDO警告或异常是一个好主意,这样它可以告诉您什么是错误的,什么是失败的。有关详细信息,请参见此处:

    启用PDO警告或异常。@mario感谢您的评论。。我已经更改了代码并添加了一个捕获,但是抛出的错误代码非常模糊,我无法缩小错误范围。连接失败:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第2行“”附近要使用的正确语法。它只是没有告诉我们错误在哪里,因为“”是空的–查找Unicode空格,反勾引号列标识符,并使用real PREADED语句(而不是PDO::ATTR_SIMULATE_PREADES),或者使用
    ->exec(array(…)
    绑定参数。还有一个结束语
    括号不见了。@mario你是我的英雄!。。这是一个该死的缺少括号的地方。接得好。。我准备把头发拔出来,回到mysqlI,我建议用普通的PDO玩一会儿;它肯定比过时的mysql函数简单。但要研究精益包装,它可以将这些代码简化为
    db(“插入evnt(:?)值(::)”、$row、$row)
    或其他任何形式。