No.5ベストアンサー
- 回答日時:
取り違えがありましたね、これで問題ないでしょうか?「値を削除」=「NULLをセット」として考えました。
今回のケースではプリペアドステートメントを使わない方がスッキリするかも。$name = isset($_POST['name']) && is_string($_POST['name']) ? $_POST['name'] : '';
if ($name !== 'null') { $name = "'" . mysqli_real_escape_string($link, $name) . "'"; }
mysqli_query($link, "UPDATE table SET name = {$name} WHERE id = 1");
ちなみにOracleはNULLを空文字列と同一視することを今後も保証し続けるかどうかは分からないとしています。今回利用しているのはMySQLなので関係ないですが。
回答ありがとうございます
自分でも実験してみました
空文字をアップしてみてから空文字をselectしてみると空文字が検索できました(空文字見えないけどはいってる!)
nullとの違いがわかりました。
No.4
- 回答日時:
>空文字をdbに入れた場合、dbのカラムの値はなしになるのでしょうか?
>それとも、見えないけどなにか入ってしまうのでしょうか?
使うDBに依存する。
Oracleだとnullと空文字は同じ物。
MS SQL Server、MySQL、PostgreSQLはnullは別物扱いする。
一律でnullと空文字は違いますなんて回答する人はド素人です。(自分がプログラミングできていると勘違いしている人)
空文字を渡すのかnullを渡すのかselectなどの条件句などでの挙動も変わってくるから注意。
>$name = isset($_POST['name']) && is_string($_POST['name']) ? $_POST['name'] : '';
>if ($name === 'null') {
ここ自分で書いていて変だと思わなかったのか?
もっとも
>その日本語をそのままPHPコードにするだけですね。何も難しいことはありません。
だけど
>文字列nullをpostした場合だと、空文字をいれるのではなくdbの値を削除できますか?
>dbのカラムの値はなしになるのでしょうか?
から普通に判断されるなら消したいのは行ではなくてカラムだよね?
すいません。自分の質問の仕方が悪かったです
mysqlのnameのカラムの値に空文字が入ってしまった場合、どうゆう挙動をするのか知っておかなければと思って質問しました
カラムに空文字を入れても問題ないでしょうか?(例えばdb容量が増えるとか空文字でselectできてしまうとか)
No.3
- 回答日時:
>> HTMLフォームから送る時に、文字列nullをpostした場合だと、空文字をいれるのではなくdbの値を削除
その日本語をそのままPHPコードにするだけですね。何も難しいことはありません。
$name = isset($_POST['name']) && is_string($_POST['name']) ? $_POST['name'] : '';
if ($name === 'null') {
mysqli_query($link, 'DELETE FROM table WHERE id = 1');
} else {
$stmt = mysqli_prepare($link, 'UPDATE table SET name = ? WHERE id = 1');
mysqli_stmt_bind_param($stmt, 's', $name);
mysqli_stmt_execute($stmt);
}
# 「mysqli_stmt_bind_param」「mysqli_stmt_execute」とか関数名長すぎて毎回オブジェクト指向で書きたくなる
No.1
- 回答日時:
nullと空文字は違いますよ。
nullは何も入っていない状態。
空文字は空文字が入っている状態。
回答ありがとうございます
HTMLフォームから送る時に、文字列nullをpostした場合だと、空文字をいれるのではなくdbの値を削除できますか?
※mysqlです
<select name="name">
<option value="null">
</select>
$name = $_POST['neme']; //$nameの値はnull
UPDATE table SET name=$name WHERE id=1
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- PHP ここで言う空文字の意味とは? 1 2022/08/05 16:27
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL テーブル作成時のカラムについて 2 2022/08/27 21:48
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpで変数を使ってcopyできない
-
PHP MySql 画像を取得
-
PHPで入力フォームでデータを確...
-
MySQL,PHPのリロードによる二重...
-
PHPからHTMLへの変数の受け...
-
VBA で、スペースを含むファイ...
-
テキストボックスの値を取得したい
-
phpからServletへmultipartのPO...
-
アップロードファイル名の文字化け
-
重複を防ぐ記述について教えて...
-
PHP ボタンが押されたら処理を...
-
ボタンをクリックでPHP文を実行
-
フォームへの前回入力値をクリ...
-
検索時の選択内容を保持する方法
-
phpで、フォームのラジオボタン...
-
【PHP】 文字サイズの変更につ...
-
<input type="hidden" >で配列...
-
フォーム送信後の更新ボタンで...
-
php セレクトボックス 値取得
-
POST GET HTTP 404 未検出
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Flaskでサーバー立ち上げに関して
-
重複を防ぐ記述について教えて...
-
VBA で、スペースを含むファイ...
-
phpで変数を使ってcopyできない
-
PHPで入力フォームでデータを確...
-
PHPからHTMLへの変数の受け...
-
POSTの項目に追加
-
PHP MySql 画像を取得
-
MySQL,PHPのリロードによる二重...
-
UPDATEできない
-
ファイル名を変更してアップロ...
-
php、sqlite3にデーター追加で...
-
openCVのトラックバーについて
-
複数条件での検索について教え...
-
PHP5でsimple_xml_load_fileす...
-
PHPのリロード時の処理
-
連想配列を複数条件で比較して...
-
PDOのprepareでLIKEの部分一致...
-
POSTされない
-
アップロードしたファイルの絶...
おすすめ情報