mysqlの型が勝手に変換されてしまいます
mysqlの方が勝手に変換されてしまいます
現在ローカルのxammp環境でとあるデータベース(NySQL)で処理を行うアプリを作っています。
ローカル環境では問題なかったのですがXserverのPHPサーバーにアップしたところ挙動が変わりました。
具体的には数値型として挿入した値が呼び出すときに勝手に文字列になってしまいました。
ソースコード
$sql = INSERT INTO drawing(hogehoge) values(:hogehoge);
try{
$pdo->beginTransaction();
$stmh = $pdo->prepare($sql);
$stmh->bindValue(':hogehoge',$_POST['hogehoge'],PDO::PARAM_INT);
$stmh->execute();
$pdo->commit();
}catch(PDOException $Exception){
$pdo->rollBack();
print "エラー/挿入できませんでした:".$Exception->getMessage();
}
(割愛)検索して結果を$stmhに格納
表示するところ
<?php foreach( $stmh as $row ) { ?>
if($row['hogehoge'] !== 0){echo 'hogehoge:'.$row['hogehoge']." "; };
もしDB登録時にhogehogeを0としていたらif分の!==でスルーされてその後のecho分は処理されないはずです。
ローカル環境ではその様になったのですがXserver環境下では!==がtrueになってしまいechoが処理されます。
試しに以下の様に判定を文字列型にしたところなんとfalseになりました。
if($row['hogehoge'] !== "0"){echo 'hogehoge:'.$row['hogehoge']." "; };
DBの作成時も上記の登録バインド時も数値型にしたのに呼び出すときにだけ文字列型になってしまいます。
ローカル環境では問題なかったのでXserverの問題なのかもしれませんがもしどなたか存じでしたら教えてください!!
因みにXserverは無料のPHPサーバーを使っております。
0