mysql_queryの戻り値に関する質問
エラー コード
<?php/** * Created by PhpStorm. * User: Administrator * Date: 2015/8/16 * Time: 15:37 */if(!isset($_POST['name'])){ die('user name not define');}if(!isset($_POST['password'])){ die('user name not define');}if(empty($_POST['name'])){ die('user name is empty');}if(empty($_POST['password'])){ die('user password is empty');}require_once 'connect_server.php';connectdb();$name=$_POST['name'];$password=$_POST['password'];$sql="select * from users WHERE name=$name AND password=$password";$result=mysql_query($sql);$new=mysql_fetch_assoc($result);if($new['name']==$name&&$new['password']==$password){ echo "<script>alert('登陆成功');window.location='zhuye.php'</script>";}else{ echo "<script>alert('登陆失败');window.location='zhuye.html'</script>";}
実行可能コード
<?phprequire_once 'function.php'?><!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>所有用户</title></head><body><a href="adduser.html">添加用户</a><?php$conn=connectDb();mysql_select_db('test',$conn);$result=mysql_query("SELECT * FROM users",$conn);$dataCount=mysql_num_rows($result);echo"<table border='1'>";for($i=1;$i<$dataCount;$i++){ $result_arr=mysql_fetch_assoc($result); $id=$result_arr['id']; $name=$result_arr['name']; $age=$result_arr['age']; echo"<tr><td>$id</td><td>$name</td><td>$age</td><td><a href='edituser.php?id=$id>'>修改</a><br> <a href='deleteuser.php?id=$id>'>删除</a> </td></tr>";}echo"</table>";?></body></html>
2 つのコードの mysql_query の戻り値は同じですが、関数がその戻り値を呼び出すときに警告が表示されるのはなぜですか?
ディスカッションへの返信 (解決策)
"select * from users WHERE name=$name AND password=$password"
上記のコードには問題があります。名前とパスワードが引用符で囲まれていないため、SQL 構文エラーが発生します。最終的にはリソース タイプは返されませんが、正しいコードが返されるはずです。
"select * from users WHERE 'name'=$name AND 'password'=$password"
$sql="select * from users WHERE name=$name ANDpassword=$password";
次のように変更します。
$sql="select * from users WHERE name='".$name." ' AND password='".$password."' ";
$name と $password が空の場合、構文エラーが発生するためです。
まだ間違っていますか? SQL ステートメントをこれに変更してみてください。$name と $password が文字列として扱われないため、エラーが発生します。 。 。 rree
まだ間違っていますか? SQL ステートメントをこれに変更してみてください。$name と $password が文字列として扱われないため、エラーが発生します。 。 。 りー
また書き間違えてしまいました。 。 。このようにあるべきです
"select * from users WHERE 'name'=".$name." AND 'password'=".$password
それとも間違っていますか? SQL ステートメントをこれに変更してみてください。$name と $password が文字列として扱われないため、エラーが発生します。 。 。 りー
$name と $password が空の場合、構文エラーが発生するためです。 その理由を教えてもらえますか?
まだ間違っていますか? SQL ステートメントをこれに変更してみてください。$name と $password が文字列として扱われないため、エラーが発生します。 。 。 りー
または、なぜ一重引用符と二重引用符をつなぎ合わせる必要があるのか知りたいですか?
まだ間違っていますか? SQL ステートメントをこれに変更してみてください。$name と $password が文字列として扱われないため、エラーが発生します。 。 。 りー
また書き間違えてしまいました。 。 。これは次のようになるはずです一重引用符で囲む必要があります)
または、なぜ一重引用符と二重引用符をつなぎ合わせる必要があるのか知りたいですか? 一重引用符と二重引用符を結合する理由と、... の真ん中に変数を置く必要がある理由を知りたいです。2 つのドットの役割は何ですか
$sql="select * from users WHERE name= $name AND password= $password";
数値の $name および $password 変数の場合は、SQL ステートメントで直接使用できます。文字列型の変数の場合は、一重引用符を追加する必要があります
私は分割しますコードを 3 つのセクションに分ければ理解できるはずです。 2 つのドットは文字列を接続するために使用されます。これは、ドットの後の変数が文字列であることを PHP に伝えることを意味します。
"select * from users WHERE 'name'=".$name." AND 'password'=".$password
"select * from users WHERE name='".$name."' AND password='".$password."'";
"select * from users WHERE 'name'=".$name." AND 'password'=".$password
コードを 3 つのセクションに分割しました。理解できるはずです。 2 つのドットは文字列を接続するために使用されます。これは、ドットの後の変数が文字列であることを PHP に伝えることを意味します。
"select * from users WHERE name='".$name."' AND password='".$password."'";
"select * from users WHERE 'name'=".$name." AND 'password'=".$password
"select * from users WHERE name='".$name."' AND password='".$password."'";
つまり、各一重引用符 / 二重引用符は 2 番目の一重引用符 / 二重引用符に遭遇します。 、その文字の段落は終了します。これら 3 つの段落はすべて、二重引用符内の一重引用符で囲まれています。 。
わかりました〜ありがとうございます

ホット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)

ホットトピック









Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。
