我有一個數據庫表,有幾個BIT(1)
類型的列。如果我忘記準備好的陳述,我可以很容易地做這樣的事情:您如何使用PDO預處理語句和BIT(1)列?
UPDATE tablename SET
bit_column_1 = b'1',
bit_column_2 = b'0'
而且這將工作完美。但是,無論我嘗試使用準備好的語句,該值始終爲'1'。
我也做了以下內容,他們沒有工作,如果$_POST['bit_col']
是0
:
$stmt = $dbh->prepare("UPDATE tablename SET
bit_col = :bit_col ");
// First attempt
$stmt->bindValue('bit_col', $_POST['bit_col']);
// Second attempt
$stmt->bindValue('bit_col', $_POST['bit_col'], PDO::PARAM_INT);
// Third attempt
$stmt->bindValue('bit_col', "b'{$_POST['bit_col']}'");
然後我試圖改變事先準備好的聲明把b
那裏,但我得到number of bound variables does not match number of tokens
$stmt = $dbh->prepare("UPDATE tablename SET
bit_col = b:bit_col ");
$stmt->bindValue('bit_col', $_POST['bit_col']);
$stmt = $dbh->prepare("UPDATE tablename SET
bit_col = b':bit_col' ");
$stmt->bindValue('bit_col', $_POST['bit_col']);
另外值得一提的是PDO::ATTR_EMULATE_PREPARES
設置爲true
。將其設置爲false
將需要我重構相當多的東西,因爲我無意中管理了數據庫連接。
所以我的問題是,是否有可能在MySQL中使用BIT
列的預準備語句,如果是這樣,如何?
你可以試試這個不帶參數
訪問http://計算器.com/questions/10540483/pdostatement-mysql-insertion-value-0-into-a-bit1-field-1-written-1/34578200#34578200 – saeed