感谢社区中的许多人,我一直在尝试将所有内容转换为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)