嗨,我是PHP的新手,如果有人能告诉我这段代码中哪里出错了,我真的很感激。
为了将代码放在上下文中,我使用facebook来验证用户身份并将他们的注册详细信息添加到我的应用数据库中。
在以下代码中,打算检查用户是否已存在于数据库中,如果不存在则添加它们。
出于某种原因,我无法测试$result
我检查了查询变量,它们没有问题地回显
@ $con = new mysqli('localhost', 'username', 'password', 'database');
if(mysqli_connect_errno()){
echo 'Error: Could not connect to the database. Please try again later';
exit;
}
$query = "SELECT * FROM users WHERE oauth_provider = 'facebook' AND oauth_uid ='".$uid."'";
$result = $con->query($query);
if($result === FALSE){
$insertquery = "INSERT INTO ('oauth_provider', 'oauth_uid', 'username') VALUES ('facebook', '".$uid."', '".$username."')";
$result = $con->query($query);
}
我应该添加我使用旧的mysql方法工作的代码。但我已经读过,最好使用面向对象的mysqli方法。
这是旧的工作代码
if($session){
$con = mysql_connect('localhost', 'user', 'password');
$select_db = mysql_select_db('database');
if(!$con || !$select_db){
die('Could not connect: ' . mysql_error());
}
else{
echo "connected to database and table selected";
}
$query = mysql_query("SELECT * FROM users WHERE oauth_provider = 'facebook' AND oauth_uid = ". $user['id']);
$result = mysql_fetch_array($query);
if(empty($result)){
$query = mysql_query("INSERT INTO users (oauth_provider, oauth_uid, username) VALUES ('facebook', {$user['id']}, '{$user['name']}')");
$query = mysql_query("SELECT * FROM users WHERE id = " . mysql_insert_id());
$result = mysql_fetch_array($query);
}
}
感谢您提供的任何帮助。
答案 0 :(得分:2)
使用MySQLi_Result::num_rows
property获取MySQLi_Result object的行数:
if ($result->num_rows > 0) {
// …
}
答案 1 :(得分:2)
可以这样简单地完成:
if($result)
{
// Do code when there are results
} else {
// Do code when there are no results
}
答案 2 :(得分:1)
if( $result instanceof mysqli_result && $result->num_rows==0)
分解:
$result instanceof mysqli_result
这是为了确保查询通过并返回结果
$result->num_rows==0
这是检查匹配任何现有记录的先前查询