ホームページ >バックエンド開発 >PHPチュートリアル >mysql_queryの戻り値に関する質問

mysql_queryの戻り値に関する質問

WBOY
WBOYオリジナル
2016-06-23 13:28:24856ブラウズ

エラー コード

<?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=' ".$name."' AND passwd='".$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

つまり、各一重引用符 / 二重引用符は 2 番目の一重引用符 / 二重引用符に遭遇します。 、その文字の段落は終了します。これら 3 つの段落はすべて、二重引用符内の一重引用符で囲まれています。 。

コードを 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 つの段落はすべて、二重引用符内の一重引用符で囲まれています。 。
わかりました〜ありがとうございます
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。