[英]Insert Varbinary data on Mysql table via php
我有一個小問題,我敢肯定有人有解決方案,我有一個從一組無符號整數轉換的二進制數據
$ _BIN = pack('I *',3563547,6587568,5468456,6458568,4568568);
我想將其插入包含varbinary列的表中
$ strSQL =“插入表名稱(id,ba)VALUES($ id,$ _BIN)”;
由於某種原因,我得到以下錯誤
Erreur SQL:您的SQL語法有誤; 檢查與您的MySQL服務器版本相對應的手冊,以找到在第1行SQL字符串'_'附近使用的正確語法:INSERT INTO table_name(id,ba)VALUES(467, ('ùZ¢O ^, ¦EòÇjÞ |²EÎóÇjÞ| ²EÎp>)
希望你們能幫助我
這對我有用:
DROP TABLE IF EXISTS `binary`;
CREATE TABLE `binary`(
id INT NOT NULL AUTO_INCREMENT,
ba VARBINARY( 100 ),
PRIMARY KEY(`id`)
) ENGINE=MYISAM;
和PHP代碼(使用PDO):
<?php
$db = new PDO('mysql:dbname=test;host=localhost:4040','xxx','xxxx');
$_BIN=pack('I*', 3563547,6587568,5468456,6458568,4568568);
$rs = $db->prepare("INSERT INTO `binary`(`ba`) VALUES(?)");
$rs->execute(array($_BIN));
更新
請參閱下面基於您建議的帶有命名參數的代碼:
<?php
$_SNB = 23;
$_USR = "toto";
$_BIN = pack('I*', 24325, 2556456, 547577, 675746, 535646, 4564575, 575474, 4735);
$db = new PDO('mysql:host=localhost:4040;dbname=test','xxxx','xxxx');
$db->exec('SET CHARACTER SET utf8');
$rs = $db->prepare("INSERT INTO `spw_license` (`serial_num`, `user`, `ba_struct`)
VALUES(:serial_num, :username, :ba_struct)");
$rs->bindValue(':serial_num', $_SNB, PDO::PARAM_INT);
$rs->bindValue(':username', $_USR);
$rs->bindValue(':ba_struct', $_BIN, PDO::PARAM_LOB);
try {
if(!$rs->execute()) {
var_dump($db->errorInfo());
}
} catch(Exception $e) {
echo 'got Exception: ' . $e->getMessage() . PHP_EOL;
}
啟動后的表格如下所示:
mysql> select * from `spw_license`;
+------------+------+----------------------------------+
| serial_num | user | ba_struct |
+------------+------+----------------------------------+
| 23 | toto | ♣_ (☻' ∙ вO
^ _жE Є ⌂↕ |
+------------+------+----------------------------------+
1 row in set (0.00 sec)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.