php - 尝试使用prepare和bindParam将用户数据插入SQL表

标签 php mysql sql

尝试将用户输入插入 MYSQL 数据库。我正在使用 REPLACE INTO 因为列 email 有一个唯一的键来防止重复。表名称为 launch_email。我试图通过使用 preparebindParam 来防止 SQL 注入(inject),但是我不断收到此错误:调用未定义的函数 bindParam()。有什么解决办法吗?

PHP/SQL:

require(ROOT_PATH . "inc/database.php");
try {
    $replace = $db->prepare("REPLACE INTO launch_email VALUES (:email_str)");
    $replace = bindParam(":email_str", $email, PDO::PARAM_STR);
    $replace->execute();
} catch (Exception $e) {
    echo "Data could not be submitted to the database.";
exit;
}

编辑:下面的代码解决了我的问题。我正在将一个方法分配给一个非对象。

require(ROOT_PATH . "inc/database.php");
try {
    $replace = $db->prepare("REPLACE INTO launch_email VALUES (:email_str)");
    $replace->bindParam(":email_str", $email, PDO::PARAM_STR);
    $replace->execute();
} catch (Exception $e) {
    echo "Data could not be submitted to the database.";
exit;
}

最佳答案

请记住,bindParam 是 PDO、MySQLi 类或您正在使用的任何数据库类的方法...因此必须以这种方式调用它:

$replace->bindParam(":email_str", $email, PDO::PARAM_STR);

关于php - 尝试使用prepare和bindParam将用户数据插入SQL表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23203193/

相关文章:

php - 帮助我理解浏览 glype 代理时的 HTTP 请求

PHP:mcrypt 将字符串的开头损坏为垃圾

sql - PGSQL - 如何在另一个查询中使用 select 语句的输出?

php - 如何: Match string from search box and proper case table data

php - 如何在 php 中使用日期条件获取数据

php - laravel 中的 session 和 session flash

PHP登录总是显示错误

php - 使用 Eloquent 获取具有多个 ID 的多行

如果记录不在临时表中,mysql更新表

sql - USPS 统一费率盒需要成本最小化算法