【发布时间】:2013-06-25 16:51:55
【问题描述】:
所以我尝试使用 PDO 来防止 sql 注入,但是在运行我的代码后,数据没有输入到数据库中。如果有人能找到错误,我将不胜感激。
header("location:employees.php");
$connect = mysql_connect("localhost","root","");
if(!$connect){
die(mysql_error($connect));
}
mysql_select_db("employees",$connect) or die(mysql_error());
$dbConnection = new PDO('mysql:dbname=employees;host=localhost;', 'localhost', '');
$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$name = $_POST['name'];
$position = $_POST['position'];
$wage = $_POST['wage'];
$preparedStatement = $db->prepare('INSERT INTO employees (name, position, wage) VALUES (:name, :position, :wage)');
$preparedStatement->execute(array(':name' => $name,':position' => $position,':wage' => $wage));
mysql_query($preparedStatement);
我没有收到任何错误或任何东西,但用户没有进入数据库。
【问题讨论】:
-
mysql_*已弃用。你应该使用对应的mysqli_操作/ -
您需要花一些时间查看 PDO 手册和this excellent PDO tutorial。现在您正试图混合使用
mysql_*()API 和 PDO,但两者完全不兼容。您的 PDO 代码应包含对mysql_*()函数的no 引用。 -
请告诉我这不是实际代码。
-
显然,您正在为您的用户使用
localhost而不是root。 @ObsessiveSSOℲ 和其他人,我认为他只是有一些事情可以证明他的数据库正在运行。第一次尝试通过常规mysql进行连接工作,所以他的数据库是up。 -
@Sebas
mysqli可以立即使用。首先从 mysql 开始只是加强了它的工作原理,不知何故。