2017-07-03 196 views
0

我有一個問題或PDO數據綁定的誤解,特別是bindValue()方法, 我已經搜索了很多,但我還沒有找到我的答案呢。PDO數據類型不強制類型轉換

這裏的例子中,

global $connection; 

$name = 22; 

$stm = $connection->prepare("INSERT INTO users SET `name` = :name"); 

$stm->bindValue(":name", $name, PDO::PARAM_STR); 

if ($stm->execute()) { 
    echo 'Done'; 
} 

然後,執行完成時,值被存儲在數據庫中作爲一個整數,而不是字符串和顯示任何錯誤。

+1

什麼類型的列是'name'?它表明它是一個字符串。一個字符串可以由任何字符組成。還有數字字符。在php中,很難區分1和「1」 –

+0

它有效嗎?如果是這樣,問題是什麼? – tadman

+1

如果'name'列的類型是一個整數,它只會被存儲爲一個整數,否則它將被存儲一個字符串。 – Mikey

回答

0

我不這麼認爲,請首先嚐試在您的瀏覽器FRST:

$name = '22'; 
echo $name; 
var_dump($name); 

當你看到他eventought 22 echoOut作爲一個整數,但它的類型是一個字符串。 PHP在最近的版本中處理了這個,如果你試圖給$ name變量添加一些數字,它會很好,Eventhought的變量是字符串!