ホームページ >バックエンド開発 >PHPチュートリアル >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>
"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." ' AND password='".$password."' ";
$name と $password が空の場合、構文エラーが発生するためです。
まだ間違っていますか? SQL ステートメントをこれに変更してみてください。$name と $password が文字列として扱われないため、エラーが発生します。 。 。 rree
まだ間違っていますか? SQL ステートメントをこれに変更してみてください。$name と $password が文字列として扱われないため、エラーが発生します。 。 。 りー
また書き間違えてしまいました。 。 。このようにあるべきです
"select * from users WHERE 'name'=".$name." AND 'password'=".$password
それとも間違っていますか? SQL ステートメントをこれに変更してみてください。$name と $password が文字列として扱われないため、エラーが発生します。 。 。 りー
まだ間違っていますか? SQL ステートメントをこれに変更してみてください。$name と $password が文字列として扱われないため、エラーが発生します。 。 。 りー
または、なぜ一重引用符と二重引用符をつなぎ合わせる必要があるのか知りたいですか?
$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 つの段落はすべて、二重引用符内の一重引用符で囲まれています。 。
"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."'";