【发布时间】:2014-10-23 13:42:45
【问题描述】:
如何使用 PDO Prepared Statement 在 MySQL 中插入 BIT 值?以下是我的尝试和结果。
<?php
function testIt($value)
{
$sql='INSERT INTO test(id,data) VALUES(?,?)';
$stmt=db::db()->prepare($sql);
$stmt->execute(array(0,$value));
$id=db::db()->lastInsertId();
$sql='SELECT * FROM test WHERE id='.$id;
$stmt=db::db()->query($sql);
$rs=$stmt->fetch(PDO::FETCH_ASSOC);
echo("Test for {$value} returns id {$rs['id']} and data {$rs['data']}<br>");
}
date_default_timezone_set('America/Los_Angeles');
ini_set('display_errors', 1);
error_reporting(E_ALL);
require_once('../../ayb_private/dbase.php');
$sql='CREATE TEMPORARY TABLE test (id INT UNSIGNED NOT NULL AUTO_INCREMENT, data BIT(8) NOT NULL DEFAULT 00000000, PRIMARY KEY (id) )';
$stmt=db::db()->exec($sql);
testIt('b"01010101"');
testIt('b01010101');
testIt('01010101');
testIt(0x55);
testIt("b'01010101'");
?>
结果:
Test for b"01010101" returns id 1 and data 255
Test for b01010101 returns id 2 and data 255
Test for 01010101 returns id 3 and data 255
Test for 85 returns id 4 and data 255
Test for b'01010101' returns id 5 and data 255
【问题讨论】:
-
testIt(0x55)工作吗? -
@Barmar
Test for 85 returns id 4 and data 255 -
嗯,也许你可以从这些问题中得到启示:stackoverflow.com/search?q=pdo+prepare+title%3Abit
-
根据 mysql 文档,位文字格式是
b'01010101'- 你试过吗? -
@SamDufel 没有准备好的声明,
db::db()->exec("INSERT INTO test(id,data) VALUES(0,b'01010101')");有效。我尝试将'b"01010101"'更改为"b'01010101'",但没有任何变化。
标签: php mysql pdo prepared-statement