我正在尝试连接数据库,检查列是否存在值,然后根据该值是否存在执行函数。
这是我的代码。
$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 WHERE username ='Admin']发生错误:未选择数据库。
我几乎完全确定它来自$result
行,但不清楚原因。
我觉得这是一个简单的解决方案,我只是遗漏了一些小事。
我是MySQL的新手(今天是我的第一天),所以请保持解决方案尽可能简单。
答案 0 :(得分:3)
连接后忘记拨打mysql_select_db
:
$con = mysql_connect('localhost','root','');
mysql_select_db('users', $con);
与MySQLi或PDO不同,mysql_ *库不会将数据库作为连接字符串的参数,但是如果您要迁移到MySQLi或PDO。
库MySQLi:
$con = new mysqli('localhost', 'root', '', 'users');
PDO:
$con = new PDO('mysql:host=localhost;dbname=users', 'root', '');
在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"]);
}
答案 1 :(得分:0)
我认为您的错误非常明显,您需要指定所需的数据库。
mysql_select_db("databaseName", $con);
请注意,请不要使用易被SQL注入的mysql_
库,很快就会被删除。