PHP 5.3.2 の bind_param 関数に問題があります。
次のようなデータベーステーブル名「tbl_user」とデータがあるとします。
-------------------------------------------- ユーザー ID [整数] | ユーザー名 [varchar(15)] -------------------------------------------- 350 | ジョン・スミッチ 351 | ケリー・アン --------------------------------------------
最初のコーディング:
$stmt = $mysqli->prepare("SELECT * FROM tbl_user WHERE user_id = ? ");
$stmt->bind_param('s', $v_user_id);
$v_user_id = '350a';
$stmt->execute();
システムは、「John Smitch」という名前の user_id が 350 である 1 つの結果を返します。
2 番目のコーディング:
$stmt = $mysqli->prepare("SELECT * FROM tbl_user WHERE user_id = ? ");
$stmt->bind_param('s', $v_user_id);
$v_user_id = 'a350';
$stmt->execute();
システムは空の結果を返します。
これまでのところ、PHP 5.3が値を文字列に自動キャストし、MySqlがphpからデータを受信すると、テーブル構造で定義された独自のデータ型に再び自動キャストすることを知っています。
では、値「350a」を渡したときにシステムが空の結果を返すように、この状況をどのように処理できますか?