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首先出现时,它可以正常工作。