在PHP中用双撇号替换包含单撇号的变量

在PHP中用双撇号替换包含单撇号的变量,php,mysql,sql,Php,Mysql,Sql,我将变量从foreach循环中的数组输入到数据库中。有时,这些变量中有一个撇号。我知道我需要它们在插入时看起来像这样: ("INSERT INTO table (lastname) VALUES('O''Brien')") 我需要一些大致如下的东西: str_replace("'","''","$lastname"); // $lastname happens to equal O'Brien 但单引号最终使它认为中间的房间是一个字符串。我该如何解决这个问题?谢谢 假设您正在使用mysql

我将变量从foreach循环中的数组输入到数据库中。有时,这些变量中有一个撇号。我知道我需要它们在插入时看起来像这样:

("INSERT INTO table (lastname) VALUES('O''Brien')")
我需要一些大致如下的东西:

str_replace("'","''","$lastname"); //  $lastname happens to equal O'Brien
但单引号最终使它认为中间的房间是一个字符串。我该如何解决这个问题?谢谢

假设您正在使用mysqli,因为没有人会使用mysql,对吧,您应该准备一条语句,绑定参数,然后在循环中执行它

这里有一个基本的例子

// assuming $con is a valid mysqli instance

$stmt = $con->prepare('INSERT INTO `table` (lastname) VALUES (?)');
$stmt->bind_param('s', $lastName);

// assuming you have a collection of last names in $names
foreach ($names as $lastName) {
    $stmt->execute();
}

$str=addslashes$str;使用正确的转义,比如mysqli\u real\u escape\u字符串或使用准备好的语句。addslashes?!?!你在开玩笑吗?