【问题标题】:Inserting HEX code in SQL database在 SQL 数据库中插入 HEX 代码
【发布时间】:2018-08-22 15:57:29
【问题描述】:

我尝试通过 PHP 将十六进制代码插入 SQL 数据库,但无法完成。我试图 UNHEX 但它没有给出任何结果。 输入代码:

<input type="color" name="color">

插入 PHP 代码:

$color = $_POST['color'];
$query = "INSERT INTO `kolor` (`color`) VALUES (UNHEX($color))";

【问题讨论】:

  • 你能说得更具体点吗?什么不适合你?据我了解这个问题,您要做的就是在您的数据库中存储一个十六进制颜色代码,例如#000000,对吗?
  • 您希望它存储什么? unhex 将参数中的每对字符转换为它们的 ascii 表示,但是对于高于 7F 的任何字符,这不会返回您所期望的。 HTML 5 颜色输入也通过前导 #,因此如果您尝试将其转换为 RGB 值/等,则需要先修剪它。
  • 回应西蒙的问题:是的,就是这样
  • 回应Iainn的问题:我想存储#000000或#FFFFFF等十六进制颜色代码
  • @NiceGuy 在特别回复某人时,您需要像我在这里为您所做的那样使用@member 方法对他们进行ping 操作。它们可能不再存在。

标签: php sql forms hex


【解决方案1】:

我想你不需要UNHEX(),直接保存即可。

PDO 是执行查询的好方法。

例子:

$host = '127.0.0.1';
$db   = 'test';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';

$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

$pdo = new PDO("mysql:host=$host;dbname=$db;charset=$charset", $user, $pass, $options);

$sql = "INSERT INTO `kolor` (`color`) VALUES (:color)' ";

$data = [
  "color" => $_POST['color'], 
];

$stmt= $pdo->prepare($sql);
$stmt->execute($data);

你可以在https://phpdelusions.net/pdo阅读更多关于PDO的信息

【讨论】:

    【解决方案2】:

    做这个:

    $query = "INSERT INTO kolor (color) VALUES ('$color')";
    

    但是要小心,因为你有一个使用这种语法的大型 SQL 注入,你需要在之前准备你的请求。

    欲了解更多信息:https://www.owasp.org/index.php/SQL_injection

    【讨论】:

    • 如何准备我的请求?我正在使用 Phpmyadmin。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    • 2013-09-15
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多