Php mysqli_real_escape_字符串不';我好像不工作

Php mysqli_real_escape_字符串不';我好像不工作,php,mysql,mariadb,Php,Mysql,Mariadb,我是PHP的新手。我试图将变量的值插入MariaDB表,并试图使用mysqli_real_escape_字符串来转义“$value”。 我是从你那里得到这个主意的。 它向表中插入了一个空字符串(我确实向数据库添加了一个连接链接) 所以,我从中复制并粘贴了以下代码,但仍然不起作用。我得到的输出只是一个错误代码:error:42000。我错过了什么 我正在使用Virtualbox, OS:CentOS7 这里有一个准备好的语句的示例: $city = "'s Hertogenbosch";

我是PHP的新手。我试图将变量的值插入MariaDB表,并试图使用mysqli_real_escape_字符串来转义“$value”。 我是从你那里得到这个主意的。 它向表中插入了一个空字符串(我确实向数据库添加了一个连接链接)

所以,我从中复制并粘贴了以下代码,但仍然不起作用。我得到的输出只是一个错误代码:error:42000。我错过了什么

我正在使用Virtualbox, OS:CentOS7


这里有一个准备好的语句的示例:

$city = "'s Hertogenbosch";    

// Connect to db, returns mysqli-connection
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

// Prepare, "?" for placeholders, returns mysqli-statement
$stmt = $mysqli->prepare("INSERT INTO myCity (Name) VALUES (?)");

// Bin param to statement, with type "s" for string
$stmt->bind_param("s", $city);

// Well execute :D
$stmt->execute();

有关详细信息,请参见:,

这里有一个准备好的声明的示例:

$city = "'s Hertogenbosch";    

// Connect to db, returns mysqli-connection
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

// Prepare, "?" for placeholders, returns mysqli-statement
$stmt = $mysqli->prepare("INSERT INTO myCity (Name) VALUES (?)");

// Bin param to statement, with type "s" for string
$stmt->bind_param("s", $city);

// Well execute :D
$stmt->execute();


有关详细信息,请查看此处:,

警告:当使用
mysqli
时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。注意:
mysqli
的面向对象界面明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的
mysql\u查询
接口混淆。在你对程序性风格投入太多之前,值得换一种。示例:
$db=new mysqli(…)
$db->prepare(“…”)
过程接口是PHP 4时代的产物,当时引入了
mysqli
API,不应该在新代码中使用。许多问题都可以通过错误检测和解决,因此错误不容易被忽略。谢谢,@tadman!我将尝试切换到面向对象PHP最重要的是占位符值。OO风格更加简洁,我认为一旦你习惯了它,你会发现使用它的工作量要少得多。警告:当使用
mysqli
时,你应该使用and,并将用户数据添加到你的查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。注意:
mysqli
的面向对象界面明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的
mysql\u查询
接口混淆。在你对程序性风格投入太多之前,值得换一种。示例:
$db=new mysqli(…)
$db->prepare(“…”)
过程接口是PHP 4时代的产物,当时引入了
mysqli
API,不应该在新代码中使用。许多问题都可以通过错误检测和解决,因此错误不容易被忽略。谢谢,@tadman!我将尝试切换到面向对象PHP最重要的是占位符值。OO风格更加简洁,我认为一旦你习惯了,你会发现使用它的工作量会大大减少。很好的例子,但如果它适合原始问题的要求,则总是最好的。我可以做到这一点,等等:)@Emotions如果这回答了你的问题,你应该接受答案。准备好的语句的好例子@Pilan@情感请发布您尝试过的内容-从中可以更容易地获得帮助很好的示例,但如果它适合原始问题的要求,则总是最好的。我可以做到这一点,请稍候:)@Emotions如果这回答了您的问题,您应该接受答案。准备好的语句的好例子@Pilan@请把你尝试过的东西贴出来,这样更容易得到帮助
$city = "'s Hertogenbosch";    

// Connect to db, returns mysqli-connection
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

// Prepare, "?" for placeholders, returns mysqli-statement
$stmt = $mysqli->prepare("INSERT INTO myCity (Name) VALUES (?)");

// Bin param to statement, with type "s" for string
$stmt->bind_param("s", $city);

// Well execute :D
$stmt->execute();