PDO INSERT语句未插入

Miu*_*shi -1 php mysql pdo

感谢社区中的许多人,我一直在尝试将所有内容转换为PDO.我有一个INSERT INTO语句,我尝试转换为PDO,但它没有插入.我也没有收到任何错误.

这是我试图转换的内容:

<?php
session_start();
$con = mysql_connect("host", "username", "password", "DBname"); 
$username = $_SESSION['username'];
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("dbname", $con);

mysql_query("INSERT INTO badge_status (username, badge1)
VALUES ('$username', 'finished')");

mysql_close($con);
?> 
Run Code Online (Sandbox Code Playgroud)

PDO版本

<?php
session_start();
$db = new PDO('mysql:host=hostname;dbname=dbname;charset=UTF-8', 'username', 'password');
$username = $_SESSION['jigowatt']['username'];
$awardFinished = $db->prepare('INSERT INTO badge_status (username, badge1) VALUES ('$username', 'finished')');
?>
Run Code Online (Sandbox Code Playgroud)

谢谢,如果你能抓住正在发生的事情或者可以解决这个问题!

new*_*rey 10

准备好语句后$awardFinished = $db->prepare(...);,必须执行它:

$awardFinished->execute();
Run Code Online (Sandbox Code Playgroud)

此外,我不确定这只是您的帖子或实际代码中的错误,但您在此处使用了无效的单引号:

$db->prepare('INSERT INTO badge_status (username, badge1) VALUES ('$username', 'finished')');
Run Code Online (Sandbox Code Playgroud)

不论固定的,您使用的是事先准备好的声明; 您不应该直接将变量插入查询中.

尝试更新到:

$awardFinished = $db->prepare('INSERT INTO badge_status (username, badge1) VALUES (:username, "finished")');
$awardFinished->execute(array(':username' => $username));
Run Code Online (Sandbox Code Playgroud)