所以我正在尝试开发一个应用程序,我需要一个API,所以我现在正在尝试PHP,以便将我的变量从应用程序传递给MYSQL。我首先尝试$ _GET,看看是否一切正常。我试图通过MYSQL Workbench将变量传递到数据库,然后从应用程序传递到工作正常。但是,当我倒空桌子并再试一次它没有用!所以我猜我的循环对我的表是空的这个事实反应不好(?)
这是检查电子邮件和用户名的代码(如果存在),如果没有,则插入变量:
$result = 'notSet';
$query=mysql_query("SELECT * FROM project");
while ($row = mysql_fetch_assoc($query)) {
if(strcmp($row['email'],$email)==0){ //strcmp uses two strings and it returns an integer, if 0 then no differences if more than 0 then there are
$result = 'Email exists';
}else{
if(strcmp($row['username'],$username)==0){
$result = 'Username exists';
}else{
//encryption
$insert = mysql_query("INSERT INTO project VALUES ('$userid', '$fullname','$username','$password','$course','$year','$age','$email')");
$result = 'Registered';
session_start();
$session = session_id();
$SESSION['username']=$username;
}
}
}
任何想法??
答案 0 :(得分:3)
你的桌子是空的。 $ query返回false。因此,您的循环不会被执行。您应该像这样更改代码:
if($query){
while(){
//check username and email
}
}
else{
// execute insert query
}
你可以尝试这段代码:
$result = 'notSet';
$query = mysql_query("SELECT * FROM project WHERE email = '$email' OR username = '$username' ");
if(mysql_num_rows($query) === 0 ){
$insert = mysql_query("INSERT INTO project VALUES ('$userid', '$fullname','$username','$password','$course','$year','$age','$email')");
$result = 'Registered';
session_start();
$session = session_id();
$SESSION['username']=$username;
}
else{
$result = 'Username or Email exists';
}
答案 1 :(得分:1)
仅当字段类型不是整数类型时,才应添加单引号'
。例如,如果userid
字段是整数类型而其余字段不是整数类型,则查询将是
$insert = mysql_query("INSERT INTO project VALUES ($userid, '$fullname','$username','$password','$course','$year','$age','$email')") or die(mysql_error());
感谢
答案 2 :(得分:1)
首先:你应该切换到PDO或mysqli,因为不推荐使用mysql_ *函数。请按照Shais评论中的链接进行操作。
要完成INSERT
,您必须改变逻辑。现在使用您的代码,永远不会为空结果集执行它。你可以这样做:
$query=mysql_query("SELECT * FROM project");
if (mysql_num_rows($query) > 0) {
// we've got results, let's loop through the resultset
while($row = mysql_fetch_assoc($query)) {
// do something with the result
}
}
else {
// we've got no results,
// do the insert
}
mysql_query将返回SELECT
类型查询的资源。资源在PHP中评估为true
。您可以使用mysql_num_rows()来检查结果集是否为空。
摘录链接手册:
使用mysql_num_rows()来查找为a返回的行数 SELECT语句
PS:请考虑红色框的内容。
答案 3 :(得分:0)
<?php
$query=mysql_query("INSERT INTO project set id=$userid,
'fullname'=$fullname,
'username'=$username,
'password'=$password,
'course'=$course,
'year'=$year,
'age'=$age,
'email'=$email
");
?>