为什么一个人不应该使用mysql_*功能的技术原因是什么?(例如mysql_query(),mysql_connect()或mysql_real_escape_string())?
即使他们在我的网站上工作,为什么还要使用其他东西?
如果他们不在我的网站上工作,为什么我会收到错误
警告:mysql_connect():没有这样的文件或目录
我试图用PHP验证登录但是收到此错误:
致命错误:未捕获错误:在/opt/lampp/htdocs/social/index.php:100中调用未定义函数MYSQL_NUM_ROWS()堆栈跟踪:#opt {lampp /hococs /social/index.php中引发#0 {main}在线100
这是我的代码
if(isset($_POST['login'])){
$studentid = $_POST['studid'];
$pass = $_POST['password'];
$query2 = mysqli_query($con, "SELECT * FROM members WHERE student_id = '$studentid' AND password = '$pass' ") or die (mysqli_connect_error());
while($studid = mysqli_fetch_object($query2))
{
echo "$studid->member_id";
}
$numberOfRows = MYSQL_NUM_ROWS($query2);
if ($numberOfRows == 0)
{
}
else if ($numberOfRows > 0){
$wewness = mysql_query("SELECT * FROM members WHERE student_id = $studentid")or die(mysql_error());
$getid = mysql_fetch_array($wewness);
if($getid['account_status']==0){
$_SESSION['login'] = 'maybe';
$_SESSION['member_id'] = $getid['member_id'];
$_SESSION['studentid'] = $getid['student_id'];
header('location:registerexec.php');
}elseif($getid['account_status']==2){ …Run Code Online (Sandbox Code Playgroud) 我的问题将使用电子邮件作为示例,但这可能适用于任何事情.
通常在注册新用户之前(包括插入他/她的电子邮件),我检查他/她的电子邮件是否已存在于DB中,如下所示:
$result = mysql_query("SELECT * FROM Users WHERE email = '".mysql_real_escape_string($email)"';");
if(!$result)
{
die(mysql_error());
}
if(mysql_num_rows($result) > 0)
{
die('<p>Email already in DB. <a....>Recover Email</a></p>');
}
else
{
//insert new user data into Users table
}
Run Code Online (Sandbox Code Playgroud)
既然我已经限制了email我的Users表中的字段UNIQUE,那么首先尝试插入是否会更快,如果失败,请检查错误?像这样的东西:
$result = mysql_query(...);//insert new user data into Users table
if(!$result)
{
if(mysql_errno()==$insert_unique_error)
{
$error = '<p>Email already in DB. <a....>Recover Email</a></p>';
}
else
{
$error = mysql_error();
}
die($die_str);
}
Run Code Online (Sandbox Code Playgroud)
问题是我不知道应该是什么$insert_unique_error.这些是我能找到的唯一错误代码:
SQLSTATE值的前两个字符表示错误类: …