我正在做核心php插入action.i我已经在本地工作查询工作正确。时间复制并粘贴查询不起作用的实时文件。我的查询在那里。
<?php
$db_host="localhost";
$db_user="username_goes_here";
$db_pass="password_goes_here";
$connection = @mysql_connect($db_host,$db_user,$db_pass) or die("Error connecting to database");
$db = mysql_select_db("abserve_wechat", $connection);
$username = $_REQUEST['username'];
$phonenumber = $_REQUEST['phonenumber'];
$password = $_REQUEST['password'];
$email = $_REQUEST['email'];
$pass=md5($password);
unset($_REQUEST['adminer_version']);
//print_r($_REQUEST);exit;
$result = mysql_query("SELECT * FROM `abserve_users` WHERE `phonenumber`='$phonenumber'");
if(mysql_num_rows($result) == 1)
{
$response['message'] = "phonenumber already taken";
echo json_encode($response);exit;
}else{
$insert = mysql_query("INSERT INTO `abserve_users` (username,phonenumber,password,email) VALUES ('$username', '$phonenumber','$pass','$email')");
$response['message'] = "Inserted successfully";
echo json_encode($response);exit;
}
?>
答案 0 :(得分:0)
关于您的代码的一些事情。
1)您没有对输入数据进行清理,因此您很容易受到SQL注入的攻击。</ p>
e.g。
$username = $_REQUEST['username'];
$phonenumber = $_REQUEST['phonenumber'];
$password = $_REQUEST['password'];
$email = $_REQUEST['email'];
2)对于这个错误:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/abservedemotech/public_html/projects/android/wechatapp/wecant.php on line 18
如果你收到mysql_num_rows($ result)的“boolean”错误,这意味着$ result是一个布尔值(TRUE或FALSE)。如果你参考mysql_query()函数(http://php.net/manual/en/function.mysql-query.php)上的文档,你会发现它只返回一个资源ON SUCCESS。 ON ERROR,它返回一个布尔值。这意味着mysql_query()中的SELECT语句出了问题。我冒昧地说,你的脚本中的问题实际上可能要高得多(例如mysql_select_db()甚至mysql_connect())。也许您的生产环境使用PHP 5.5或更高版本?这很重要,因为在PHP 5.5中不推荐使用mysql_query()。
3)你在mysql_connect()上使用@符号,这意味着你可以抑制任何可能帮助你发现生产环境是否支持mysql_connect()的错误。 http://php.net/manual/en/language.operators.errorcontrol.php
答案 1 :(得分:0)
运行此命令后:
php Desktop\test_stack.php
我插入了行:
{"message":"Inserted successfully"}
第二次我得到了:
php Desktop\test_stack.php
{"message":"phonenumber already taken"}
检查请求变量,表字段类型。
转储mysql_error();得到错误。
还使用Mysqli或PDO库。
谢谢
答案 2 :(得分:0)
使用此代码:
if($ result-&gt; num_rows&gt; 0){ }
而不是
if(mysql_num_rows($ result)== 1)
答案 3 :(得分:0)
问题不在你的代码中,而是在你正在形成的sql查询中,
$result = mysql_query("SELECT * FROM `abserve_users` WHERE `phonenumber`='$phonenumber'");
如果查询成功运行,$ result中存储的值将为资源类型
否则你的$ result变量包含boolean。
你可以使用var_dump($ result);检查结果变量;
您应该使用以下行代替开发目的。
$result = mysql_query("SELECT * FROM `abserve_users` WHERE `phonenumber`='$phonenumber'") or die("query failed to execute");
您应该始终检查您的查询是否成功执行。
如果您不希望每次出现任何错误导致您的应用程序死亡,您也可以这样使用它,如果查询失败,请使用自定义函数
$query = "SELECT * FROM `abserve_users` WHERE `phonenumber`='$phonenumber'";
$result = mysql_query($query) or checkerror($query);
在checkquery函数中你可以
function checkerror($query){
echo "<div style='position:fixed;z-index:400;top:20%;border:5px solid red;width:600px;left:0;right:0;margin:auto;padding:20px;background:white;'>
<h1>Sorry to disturb you !! But an error is found</h1>
<p>The error is regarding the following query :</p>
<p>".$query."</p>
</div>";
//die();
}
还有其他更好的方法可以开始使用Mysqli或Pdo。
答案 4 :(得分:0)
最好使用MySqli函数而不是MySql函数。这段代码可以正常插入记录。
<?php
$db_host="localhost";
$db_user="root";
$db_pass="";
$db="test";
$connection = @mysqli_connect($db_host,$db_user,$db_pass,$db) or die("Error connecting to database");
if(isset($_POST["submit"]))
{
$sql1="select * from abserve_users where phonenumber='".$_POST["phonenumber"]."' ";
$result=mysqli_query($connection,$sql1);
if(mysqli_num_rows($result)==1)
{
$response['message']="phonenumber already taken";
echo json_encode($response);exit;
}
else
{
$username=$_POST["username"];
$phonenumber=$_POST["phonenumber"];
$password=$_POST["password"];
$email=$_POST["email"];
$sql2="insert into abserve_users (username,phonenumber,password,email) values ('$username','$phonenumber','".md5($password)."','$email')";
$insert = mysqli_query($connection,$sql2);
$response['message']="Inserted successfully";
echo json_encode($response);
exit;
}
}
?>
<!DOCTYPE html>
<head>
<title>insert_select</title>
</head>
<body>
<form action="#" method="post">
username:<input type="text" name="username"><br><br>
phonenumber:<input type="text" name="phonenumber"><br><br>
password:<input type="password" name="password"><br><br>
email:<input type="email" name="email"><br><br>
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>