Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP检查数据库中的现有条目_Php_Sql - Fatal编程技术网

PHP检查数据库中的现有条目

PHP检查数据库中的现有条目,php,sql,Php,Sql,我正在尝试查找数据库中是否已存在用户名。出于某种原因,$result返回false,我不知道为什么。我可以很好地把东西输入数据库。如果有必要的话,我会使用Fugu将代码上传到服务器上。我是php新手,所以任何帮助都会很好 以下是查询失败的代码: $dbh = new PDO('mysql:host=localhost;dbname=baseuser' . $db_users_database, $db_user, $db_pass); $result = mysql_query("SEL

我正在尝试查找数据库中是否已存在用户名。出于某种原因,$result返回false,我不知道为什么。我可以很好地把东西输入数据库。如果有必要的话,我会使用Fugu将代码上传到服务器上。我是php新手,所以任何帮助都会很好

以下是查询失败的代码:

$dbh = new PDO('mysql:host=localhost;dbname=baseuser' . $db_users_database, $db_user, $db_pass);
    $result = mysql_query("SELECT COUNT(username) FROM users WHERE username='$username' GROUP BY username");
                $num_rows = mysql_num_rows($result);

                if ($num_rows != 0) {
                  echo "username taken";
                }

像这样使用
PDO
PDO
mysql.*
函数不能一起工作,您必须单独使用它们

$sth = $dbh->prepare('SELECT COUNT(username) FROM users 
WHERE username= :username GROUP BY username');
$sth->bindParam(':username', $username, PDO::PARAM_STR);
$sth->execute();

if ($sth->fetchColumn() > 0) {
   echo "username taken";
}

您正在使用连接到表,然后尝试使用-deprecated-进行查询。这是行不通的

坚持,然后使用PDO,您甚至可以通过准备好的语句将其提升到下一个级别

例如:

$dbh = new PDO('seeyourcode');
$sql = "SELECT COUNT(username) 
        FROM users 
        WHERE username= :user 
        GROUP BY username";

// Prepare the statement
$sth = $dbh->prepare($sql);
$sth->bindParam(':user', $username, PDO::PARAM_STR);

// now execute
$sth->execute();

// fetch the result
$result = $sth->fetchAll();
var_dump($result);
var\u dump()
就是为了让您感觉对象的外观。您可以执行所需的任何操作,但结果不在此处。

使用以下方法:

$stmt = $dbh->prepare('SELECT EXISTS(SELECT * FROM `users` WHERE `username` LIKE :username) as `taken`');
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->execute();

$result = $stmt->fetch(PDO::FETCH_ASSOC);

if($result['taken']){
    echo "username taken";
}

$stmt = null;

此外,您还错误地使用了
PDO
。请检查。

不要使其复杂化。使用简单的连接方法并像这样使用查询:

$check_if_already = mysql_query("SELECT * FROM uxxx where id = 1113");

$count_total_rows = mysql_num_rows($check_if_already);
echo $count_total_rows;

    if ($count_total_rows > 0) {
       echo "Not duplicate";
       //do your task here
    } else {
        echo 'Duplicate';
    }

你究竟为什么要将
PDO
与函数
mysql\u query
结合使用呢。他们不在一起工作。如果按
PDO
的方式运行,则使用所有基于
PDO
的功能。为什么人们如此粗鲁,我的意思是6张反对票,没有人愿意告诉/建议改善现状question@NoobASThreeDeveloper:嗯?从什么时候起,否决票与改善问题有关?投票支持这个问题。而反对票并不是粗鲁的,它们是“粗鲁”要求回答的同一系统的一部分。你打电话来问问题也是粗鲁的吗?谢谢!工作得很好。这是我学习php的第二天。@AngelaChen如果你是
php
的新程序员,那么我建议你继续使用
PDO
,因为它会阻止
SQL注入
。除此之外,^答案:扩展是。我建议用或代替。