有时,当你有这些时,它会很糟糕;”'(分号,单引号和双引号)字符串中的所有内容。PHP + Mysql:如何插入具有“'(分号,单+双引号)的数据
问题很简单,最简单的方式发送那些刺入数据库。
base64_encode();
base64_decode();
// Is not an option. I need to keep those data just same as it is.
有时,当你有这些时,它会很糟糕;”'(分号,单引号和双引号)字符串中的所有内容。PHP + Mysql:如何插入具有“'(分号,单+双引号)的数据
问题很简单,最简单的方式发送那些刺入数据库。
base64_encode();
base64_decode();
// Is not an option. I need to keep those data just same as it is.
PDO statements是你与具有单/双引号值执行SQL查询到数据库的问题,最好的解决办法......但更重要的是 PDO报表帮助防止SQL注入。
为了向您展示这是如何工作的,这个非常简单的示例为您提供了PDO语句如何工作的基本知识。所有这些例子都是建立到数据库的连接,并将用户名,电子邮件和密码插入到用户表中。
<?php
// START ESTABLISHING CONNECTION...
$dsn = 'mysql:host=host_name_here;dbname=db_name_here';
//DB username
$uname = 'username_here';
//DB password
$pass = 'password_here';
try
{
$db = new PDO($dsn, $uname, $pass);
$db->setAttribute(PDO::ERRMODE_SILENT, PDO::ATTR_EMULATE_PREPARES);
error_reporting(0);
} catch (PDOException $ex)
{
echo "Database error:" . $ex->getMessage();
}
// END ESTABLISHING CONNECTION - CONNECTION IS MADE.
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
$hashed_password = password_hash($password, DEFAULT_BCRYPT);
//Validation on inputs here...
// Your SQL query... here is a sample one.
$query = "INSERT INTO users (userName, email, password) VALUES (:userName, :email, :password)";
$statement = $db->prepare($query);
// The values you wish to put in.
$statementInputs = array("userName" => $username, "email" => $email, "password" => $hashed_password);
$statement->execute($statementInputs);
$statement->closeCursor();
?>
你可以把建立连接部分在一个单独的文件和require_once该文件,以避免写相同的代码,一遍又一遍,以建立与数据库的连接。
你需要
addslashes('your text') // in your php page
使用mysqli_real_escape_string
$someText = mysqli_real_escape_string($con,"It's a test.");
其中$ con是你的数据库连接变量。
使用类似PDO和绑定变量。 –
在插入数据库之前使用转义字符串... – Naga
您可以使用'addslashes()'来处理插入数据库的单引号和双引号。 –