MySQL数据库:SQL语句中不可省去的引号_MySQL
bitsCN.com
MySQL数据库:SQL语句中不可省去的引号
有一次在代码中发现了一个BUG,在排查过程中,差点晕翻;作一个DBA也碰到这种低级错误;大为自嘲。其实这个问题在官方手册里就写得很明白;(可见官方文档的重要性)
mysql > create table h1 (id int , col1 char ( 1 ));Query OK, 0 rows affected ( 0.00 sec)mysql > insert into h1 select 1 ,’I ' ;Query OK, 1 row affected (0.00 sec)Records: 1 Duplicates: 0 Warnings: 0mysql> insert into h1 select 2,’F ' ;Query OK, 1 row affected ( 0.00 sec)Records: 1 Duplicates: 0 Warnings: 0 mysql > insert into h1 select 2 ,’ 0 ′;Query OK, 1 row affected ( 0.00 sec)Records: 1 Duplicates: 0 Warnings: 0mysql > select * from h1 ;+ —— + —— + | id | col1 | + —— + —— + | 1 | I | | 2 | F | | 2 | 0 | + —— + —— + 3 rows in set ( 0.00 sec)mysql > select * from h1 where col1 = 0 ;+ —— + —— + | id | col1 | + —— + —— + | 1 | I | | 2 | F | | 2 | 0 | + —— + —— + 3 rows in set , 2 warnings ( 0.00 sec)mysql > select * from h1 where col1 = ’ 0 ′;+ —— + —— + | id | col1 | + —— + —— + | 2 | 0 | + —— + —— + 1 row in set ( 0.00 sec)mysql > select * from h1 where col1 = ’ 1 ′;Empty set ( 0.00 sec)mysql > select * from h1 where col1 = 1 ;Empty set , 2 warnings ( 0.00 sec)
发现没有:
col1=0 ; 所有行被选中;
col1=’0′ ; 结果集正常
mysql > select * from h1 where col1 = ’ 1 ′;Empty set ( 0.00 sec)mysql > select * from h1 where col1 = 1 ;Empty set , 2 warnings ( 0.00 sec)
想知道为什么吗?
看这里.
mysql > show warnings;+ ——— + —— + ————————————— + | Level | Code | Message | + ——— + —— + ————————————— + | Warning | 1292 | Truncated incorrect DOUBLE value: ‘I’ | | Warning | 1292 | Truncated incorrect DOUBLE value: ‘F’ | + ——— + —— + ————————————— + 2 rows in set ( 0.00 sec)
MySQL当数据类型不匹配时,尊重用户的输入,将字段的类型做了隐式转换然后来匹配,而字符向数字转,结果都是0;
bitsCN.com
ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP で MySQL データベースをバックアップおよび復元するには、次の手順を実行します。 データベースをバックアップします。 mysqldump コマンドを使用して、データベースを SQL ファイルにダンプします。データベースの復元: mysql コマンドを使用して、SQL ファイルからデータベースを復元します。

MySQL クエリのパフォーマンスは、検索時間を線形の複雑さから対数の複雑さまで短縮するインデックスを構築することで最適化できます。 PreparedStatement を使用して SQL インジェクションを防止し、クエリのパフォーマンスを向上させます。クエリ結果を制限し、サーバーによって処理されるデータ量を削減します。適切な結合タイプの使用、インデックスの作成、サブクエリの使用の検討など、結合クエリを最適化します。クエリを分析してボトルネックを特定し、キャッシュを使用してデータベースの負荷を軽減し、オーバーヘッドを最小限に抑えます。

MySQLテーブルにデータを挿入するにはどうすればよいですか?データベースに接続する: mysqli を使用してデータベースへの接続を確立します。 SQL クエリを準備します。挿入する列と値を指定する INSERT ステートメントを作成します。クエリの実行: query() メソッドを使用して挿入クエリを実行します。成功すると、確認メッセージが出力されます。

PHP を使用して MySQL テーブルを作成するには、次の手順が必要です。 データベースに接続します。データベースが存在しない場合は作成します。データベースを選択します。テーブルを作成します。クエリを実行します。接続を閉じます。

PHP で MySQL ストアド プロシージャを使用するには: PDO または MySQLi 拡張機能を使用して、MySQL データベースに接続します。ストアド プロシージャを呼び出すステートメントを準備します。ストアド プロシージャを実行します。結果セットを処理します (ストアド プロシージャが結果を返す場合)。データベース接続を閉じます。

MySQL 8.4 (2024 年時点の最新の LTS リリース) で導入された主な変更の 1 つは、「MySQL Native Password」プラグインがデフォルトで有効ではなくなったことです。さらに、MySQL 9.0 ではこのプラグインが完全に削除されています。 この変更は PHP および他のアプリに影響します

Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

MySQLi を使用して PHP でデータベース接続を確立する方法: MySQLi 拡張機能を含める (require_once) 接続関数を作成する (functionconnect_to_db) 接続関数を呼び出す ($conn=connect_to_db()) クエリを実行する ($result=$conn->query()) 閉じる接続 ( $conn->close())
