Php 发生错误。。。未选择任何数据库

Php 发生错误。。。未选择任何数据库,php,mysql,database,Php,Mysql,Database,我试图连接到一个数据库,检查一个列是否存在一个值,然后根据该值是否存在执行一个函数 这是我的密码 $con = mysql_connect('localhost','root','','users'); $sql = "SELECT * FROM allUsers WHERE username = '".mysql_real_escape_string($_POST["username"]) . "'"; $result = mysql_query($sql,$con) or die("Erro

我试图连接到一个数据库,检查一个列是否存在一个值,然后根据该值是否存在执行一个函数

这是我的密码

$con = mysql_connect('localhost','root','','users');
$sql = "SELECT * FROM allUsers WHERE username = '".mysql_real_escape_string($_POST["username"]) . "'";
$result = mysql_query($sql,$con) or die("Error occurred in [$sql]: " . mysql_error());
$count = mysql_num_rows($result);

if ($count != 0){
    echo "Username is already taken";
    echo "$count";
    mysql_close($con);
}

else{
    createUser($_POST["name"],$_POST["username"],$_POST["password"],$_POST["email"]);
    }
引发的错误是:

[SELECT*FROM allUsers,其中username='Admin']中出错:未选择任何数据库

我几乎完全肯定它来自
$result
行,但不知道为什么

我觉得这是一个简单的解决方案,我只是遗漏了一些小问题

我对MySQL非常陌生(事实上,今天是我的第一天),因此请尽量简化解决方案。

连接后您忘记了呼叫:

$con = mysql_connect('localhost','root','');
mysql_select_db('users', $con);
与MySQLi或PDO不同,mysql_*库不将数据库作为连接字符串的参数,但是如果要迁移到MySQLi或PDO

MySQLi:

$con = new mysqli('localhost', 'root', '', 'users');
PDO:

在MySQLi中,您的代码如下所示:

<?php
$host = "localhost";
$user = "root";
$pass = "";
$database = "users";

$con = mysqli_connect($host,$user,$pass,$database);
if($con->connect_error)
    die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());

$stmt = $con->prepare("SELECT * FROM allUsers WHERE username = ? LIMIT 1");
$stmt->bind_param('s',$_POST["username"]);

if (!$stmt->execute())
    die('Failed to excute with error ' . $con->error);

$stmt->store_result();
$count = $stmt->num_rows;
$stmt->close();
if ($count > 0)
{
    echo "Username is already taken.";
}
else
{
    createUser($_POST["name"],$_POST["username"],$_POST["password"],$_POST["email"]);
}
连接后忘记呼叫:

$con = mysql_connect('localhost','root','');
mysql_select_db('users', $con);
与MySQLi或PDO不同,mysql_*库不将数据库作为连接字符串的参数,但是如果要迁移到MySQLi或PDO

MySQLi:

$con = new mysqli('localhost', 'root', '', 'users');
PDO:

在MySQLi中,您的代码如下所示:

<?php
$host = "localhost";
$user = "root";
$pass = "";
$database = "users";

$con = mysqli_connect($host,$user,$pass,$database);
if($con->connect_error)
    die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());

$stmt = $con->prepare("SELECT * FROM allUsers WHERE username = ? LIMIT 1");
$stmt->bind_param('s',$_POST["username"]);

if (!$stmt->execute())
    die('Failed to excute with error ' . $con->error);

$stmt->store_result();
$count = $stmt->num_rows;
$stmt->close();
if ($count > 0)
{
    echo "Username is already taken.";
}
else
{
    createUser($_POST["name"],$_POST["username"],$_POST["password"],$_POST["email"]);
}

我认为您的错误很明显,您需要指定所需的数据库

mysql\u select\u db(“databaseName”,$con)


处理好这些之后,请不要使用
mysql\ucode>库,这些库容易受到SQL注入的攻击,很快就会被删除。

我认为您的错误很明显,您需要指定所需的数据库

mysql\u select\u db(“databaseName”,$con)


请注意,请不要使用
mysql\ucode>库。这些库容易受到SQL注入的影响,很快就会被删除。

如果您是PHP新手,请停止使用mysql库学习,开始使用MySQLi或PDO学习,并准备好语句。系统会说:“未选择数据库”。嗯,也许你应该选一个。谷歌搜索“PHPSelectDatabase”以获得如何实现的提示。请记住,
mysql
扩展已被弃用,并已从PHP中删除。使用
mysqli
获取新代码。这个问题似乎与主题无关,因为它是关于用谷歌搜索错误消息并修复错误的。@Sven,谢谢您的帮助。出于某种原因,谷歌搜索错误消息并没有给我带来任何结果,或者对可能的解决方案的解释让我不知所措。另外,我将来会使用mysqli,谢谢!如果您是PHP新手,那么请停止使用MySQL库学习,并开始使用MySQLi或PDO学习准备好的语句系统会说:“未选择任何数据库”。嗯,也许你应该选一个。谷歌搜索“PHPSelectDatabase”以获得如何实现的提示。请记住,
mysql
扩展已被弃用,并已从PHP中删除。使用
mysqli
获取新代码。这个问题似乎与主题无关,因为它是关于用谷歌搜索错误消息并修复错误的。@Sven,谢谢您的帮助。出于某种原因,谷歌搜索错误消息并没有给我带来任何结果,或者对可能的解决方案的解释让我不知所措。另外,我将来会使用mysqli,谢谢!这很有道理,但当我这么做的时候,它开始到处抛出错误。例如:
警告:mysqli\u select\u db()希望参数1为mysqli,字符串给定
@IanZane您试图在mysql\u库上使用
mysqli\u select\u db()
它将不起作用,您应该对mysql\u*使用
mysql\u select\u db()
,对mysqli库使用
mysqli\u select\u db
。另外,它不应该是
mysql\u select\u db()
您必须提供数据库名称
mysql\u select\u db('users')
等等,我知道了,问题是将$con作为第二个参数。当$con首先出现时,它工作得很好。这很有意义,但当我这样做时,它开始到处抛出错误。例如:
警告:mysqli\u select\u db()希望参数1为mysqli,字符串给定
@IanZane您试图在mysql\u库上使用
mysqli\u select\u db()
它将不起作用,您应该对mysql\u*使用
mysql\u select\u db()
,对mysqli库使用
mysqli\u select\u db
。另外,它不应该是
mysql\u select\u db()
您必须提供数据库名称
mysql\u select\u db('users')
等等,我知道了,问题是将$con作为第二个参数。当$con首先出现时,它可以正常工作。