INSERT INTO表VALUES - mysql_query到PDO

时间:2014-04-09 17:47:15

标签: php mysql pdo

尝试使用新的PDO从旧的mysql_query插入值,但似乎无法获取它。这是使用旧方法的旧代码:

$query = mysql_query("INSERT INTO videos VALUES ('','$title',time(),'0','$length','','$name','$cat','$reciter','$genre')");

我已尝试从堆栈上的另一个问题中获取以下代码的变体,但没有任何对我有用。

$query = "UPDATE people 
         SET price=?, 
             contact=?, 
             fname=?, 
             lname=? 
          WHERE id=? AND 
                username=?";
$stmt = $dbh->prepare($query);
$stmt->bindParam(1, $price);
$stmt->bindParam(2, $contact);
$stmt->bindParam(3, $fname);
$stmt->bindParam(4, $lname);
$stmt->bindParam(5, $id);
$stmt->bindParam(6, $username);    
$stmt->execute();

要插入的第一个值是db中的自动增量值。我不知道如何用新的PDO编写它。然后第三个是时间戳的尝试。所有其他都是脚本中已存在的值。

所以这更像我正在寻找的东西..它是我现在拥有的,但是不起作用。

$sql = "INSERT INTO videos (id, title, timestamp, views, length, image, vid_url, cetegory, reciter, genre)
                    VALUES (:id, :title, :timestamp, :views, :length, :image, :vid_url, :category, :reciter, :genre)";

$query = $DBH->prepare($sql); 
$results = $query->execute(array(
    ":id" => '',
    ":title" => $title,
    ":timestamp" => time(),
    ":views" => '0',
    ":length" => $length,
    ":image" => '',
    ":vid_url" => $name,
    ":category" => $cat,
    ":reciter" => $reciter,
    ":genre" => $genre
));

1 个答案:

答案 0 :(得分:0)

如果id是自动增量,请不要将其传递给您的查询。如果指定要插入自动增量表的值,则sql将尝试插入该值。所以不要在查询中包含它,让SQL这样做。

其次,如果第三个字段是时间戳,请将默认值设置为

CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

SQL将在更新或插入时自动更新时间戳(如果您只想在插入时放置CURRENT_TIMESTAMP。那么您也可以删除该行。

如果您没有在那里插入任何内容,也可以删除图像行,如果您不使用它,则无需在查询中添加内容!

此外,关键PDO查找没有冒号(:)所以如果您的项目是:title,则数组键将只是'title'。因此,您的代码应该类似于:

$sql = "INSERT INTO videos ( title, views, length,, vid_url, cetegory, reciter, genre)
                    VALUES (:title, :views, :length, :vid_url, :category, :reciter, :genre)";

$query = $DBH->prepare($sql); 
$results = $query->execute(array(
    "title" => $title,
    "views" => '0',
    "length" => $length,
    "vid_url" => $name,
    "category" => $cat,
    "reciter" => $reciter,
    "genre" => $genre
));