ホームページ >バックエンド開発 >PHPチュートリアル >【PHP初心者】以下の書き方のメリットとデメリットを話そう

【PHP初心者】以下の書き方のメリットとデメリットを話そう

WBOY
WBOYオリジナル
2016-06-23 14:09:29894ブラウズ

$sql="テーブル セット nikename='{$nikename}' where userid={$userid}";

$sql=sprintf("テーブル セット nikename='%s' where userid=%d",$ nikename,$userid)


ディスカッション (解決策) への返信

理解できません。今、php がとても人気があるように感じます

まず引用しなければならないような気がします
mysql_real_escape_string($nikename)
mysql_real_escape_string($userid)

2 番目のメソッドでは、%d は $userid が文字列ではなく数値である必要があると判断できます。

phpを勉強中なのですが、理解できません

$sql=mysql_query("update ulist set name='$name' where id=$id");

普段はこんな感じで書いています。何が違うのか分かりません。

習慣としては、最初に SQL を直接記述し、2 番目にそれをカプセル化することです。

2 番目の書き方は、1 番目の方法よりもわかりやすく、メモも必要ありません

$nikename = "test'; delete ...";

$sql= "update table set nikename='{$nikename}' where userid={$userid}";
var_dump($sql);

2 つのメソッドはほぼ同じなので、最初のものには慣れています。ただし、どちらもデータのフィルタリングが必要です。そうでないと、インジェクションが発生します。

決定的な PDO...

$sql="update table set nikename='{$nikename}' where userid={$userid}";

利点: 直感的。速度は2番目のものよりわずかに速いはずです。
欠点: SQL インジェクションのリスク。

$sql=sprintf("update table set nikename='%s' where userid=%d",$nikename,$userid)
利点: 直感的で、ユーザー ID を強制的に数字にします。
欠点: SQL インジェクションのリスク。

私は通常最初のものを使用します。

1 つ目の方が効率的だと思います
2 つ目は見ていません。私はかなり無知です。

実際、私は常に 2 番目のタイプでした (ここ数年、php プロジェクトに取り組んでいませんでした) 今月会社に行ったとき、1 番目のタイプの方が良いとは思いつきません、と言いました。長い間 PHP を書いてきた私の兄弟姉妹に聞きたい人は誰でも

今すぐ始めましょう

C に精通しているプログラマーは、2 番目の方法に慣れている必要があります

は、常に最初の書き方を意味します。 、、、、、

個人的には、2 番目の方法より 1 番目の方法の方が速いと思います、

それだけでも、クリックします、

結局、2 番目のタイプには、文字列をフォーマットする関数が必要です、
エコーを取得して出力します例として、
本には、前者の方が後者より効率的であると記載されています。
後者は値を返しますが、前者は値を返します。 いいえ、
もちろん PHP ドキュメントにはこれについて言及されていません。
さらに、現在 sprintf を使用しています。 、
もしかしたら、あなたの会社も同じように感じているかもしれません、
そして、MySQLi STMT を使用する方が sprintf よりも優れているでしょうか?
MySQLi STMT はより安全で読みやすいようです。

これは完全に私の個人的な意見です、私も初心者です(笑)。 。 。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。