php mysqli从同一变量插入单引号和双引号

时间:2018-09-06 21:37:45

标签: php mysqli

尝试以一个人的身高更新数据库。我已经尝试了mysqli_real_escape_string的所有变体,addslashes甚至str_replace,以尝试使用单引号和双引号来更新数据库。假设一个人为6'1“。如何将该值上传到数据库中?

 'default' => 'mysql',
 'mysql' => [
        'driver' => 'mysql',
        'dump_command_path' => '/opt/lampp/bin', // only the path, so without 'mysqldump' or 'pg_dump'
        'dump_command_timeout' => 60 * 5, // 5 minute timeout
        'dump_using_single_transaction' => true, // perform dump using a single transaction
        'host' => env('DB_HOST', '10.8.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', ''),
        'username' => env('DB_USERNAME', ''),
        'password' => env('DB_PASSWORD', ''),
        'charset' => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix' => '',
        'strict' => false,
        'engine' => null,
    ],

当我得到结果时,在数据库中返回的结果总是相同的:

#MYSQL
DB_HOST=127.0.0.1 //I have tried also localhost
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

最好接受它以这种方式更新,因为我的html页面将呈现(6'1“)而不是({$height = '6\' 1"'; $height = mysqli_real_escape_string($mysqli, $height); $sql = "INSERT INTO persons (height) VALUES ('$height')"; ),还是有更好或更安全的方式来更新数据库? / p>

1 个答案:

答案 0 :(得分:-1)

注意:mysqli_real_escape_string并不总是安全的

示例:SQL injection that gets around mysql_real_escape_string()

您应该使用prepared statementsPDO来防止SQL注入。

但是要保存高度,您可以仅使用一个INT列并将高度以最小单位(英寸)放置,然后在要显示时将其转换,例如6'1“是73英寸。要保存高度,则可以反转它。