select-PHP中,查询注册邮箱是否已经存在的SQL,如下为何未生效?

问题描述

PHP中,查询注册邮箱是否已经存在的SQL,如下为何未生效?

问题解决了。

关键代码:
//查询邮箱是否重复

     $user_email = $_POST[""user_email""];    $sql = ""select count(*) from users where user_email='$user_email'"";    $result = mysql_query($sql$con);    $row = mysql_fetch_row($result);    if ( $row[0] > 0)     {           echo $row[0];        echo ""<br/>邮箱已注册过,请直接登陆或找回密码"";}     else {        //----增加新的用户--begin

--------问题更新-------
使用如下代码,然后注册时,输入数据库已经存在的邮箱,依然会注册成功。
这是不正常的,请问问题出现在哪里?
经过我的定位,好像“查询邮箱是否重复”的代码没有生效,请各位帮忙看下?

 //查询邮箱是否重复    $user_email = $_POST[""user_email""];    $sql = ""select count(*) from users where user_email='$user_email'"";    if (mysql_query($sql$con)=='1')     {echo ""exist"";}     else {        //----增加新的用户--begin
 <!DOCTYPE html><html><head>    <meta http-equiv=""Content-Type"" content=""text/html; charset=UTF-8"" />    <style>.error {color: red;}</style></head><body><?php //检查(1)邮箱、密码、昵称是否为空;(2)邮箱格式是否正确。global $emailErr$passErr$nicknameErr; $emailErr = $passErr = $nicknameErr = """";//$user_email = $user_pass = $user_nickname = """";if (empty($_POST[""user_email""]))        {$emailErr = ""不可为空"";}    else     {        if (!preg_match(""/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/""$_POST[""user_email""])) {$emailErr = ""email格式不正确"";}         else {$emailErr=""ok"";}     }if (empty($_POST[""user_pass""]))         {$passErr = ""不可为空"";}        else {$passErr = ""ok"";}if (empty($_POST[""user_nickname""]))     {$nicknameErr = ""不可为空"";}    else {$nicknameErr = ""ok"";}?><form method=""post"" action=""<?php echo htmlspecialchars($_SERVER[""PHP_SELF""]);?>"">           <p>注册一个新用户^_^</p>    邮箱:<input type=""text"" name=""user_email""><span class=""error"">*         <?php echo $emailErr;?></span><br><br>密码:<input type=""text"" name=""user_pass""><span class=""error"">*      <?php echo $passErr;?></span><br><br>昵称:<input type=""text"" name=""user_nickname""><span class=""error"">*  <?php echo $nicknameErr;?></span><br><br>      <input type=""submit"" name ='submit' value=""注册""></form><?php//判断是否需要连接数据库if ( isset($_POST[""submit""]) && $emailErr==""ok"" && $passErr == ""ok"" && $nicknameErr == ""ok"" ){//连接数据库 Kilo20150909$con = mysql_connect(SAE_MYSQL_HOST_M."":"".SAE_MYSQL_PORTSAE_MYSQL_USERSAE_MYSQL_PASS);$con or die ('Could not connect: ' . mysql_error());//选择数据库mysql_select_db(SAE_MYSQL_DB$con);//查询邮箱是否重复    $user_email = $_POST[""user_email""];    $sql = ""select count(*) from users where user_email='$user_email'"";    if (mysql_query($sql$con)=='1')     {echo ""exist"";}     else {        //----增加新的用户--begin//获取当前时间戮$unix_timestamp=time();//插入用户注册数据$sql=""INSERT INTO users (user_emailuser_passuser_nicknameuser_reg_ipuser_reg_dateuser_last_log_ipuser_last_log_dateuser_coinsuser_rmbuser_email_status)VALUES('$_POST[user_email]''$_POST[user_pass]''$_POST[user_nickname]''$_SERVER[REMOTE_ADDR]''$unix_timestamp''$_SERVER[REMOTE_ADDR]''$unix_timestamp''0''0''0')"";if (!mysql_query($sql$con))  {  die('Error: ' . mysql_error());  }else{//echo '<br />';echo ""注册成功!"".'<br/><br/>';echo ""很高兴遇见你,"".$_POST[""user_nickname""].'<br/>';     $url='/login.php';echo ""<a href=$url>点此登陆吧</a>"";//断开数据库连接mysql_close($con);}        }        //----增加新的用户--end}    else echo ""<br/>:( 失败了,请修改~"";?></body></html>

解决方案

mysql_query($sql$con) 返回的是资源吧,用'1'判断不行吧?'1'这样就是字符串啦

解决方案二:
$sql = ""select count(*) from users where user_email='$_POST[""user_email""]'""; 最后那里是不用转义的

解决方案三:

 $sql = ""SELECT count(*) FROM user WHERE user_email="".$_POST[""user_email""];            if (mysqli_query($_con$sql)) echo 'exist';else echo 'not exist';

这样写的话就不用转义了,还有mysqli_query里面的参数你写反了,而且你上面都用到的mysqli,为什么下面还要用mysql ??

解决方案四:
问题解决了,两个原因,一是SQL单引号的问题,二是SQL结果怎么取出来的问题。

时间: 2024-11-01 13:22:18

select-PHP中,查询注册邮箱是否已经存在的SQL,如下为何未生效?的相关文章

Sybase ASA中查询元信息的几个常用SQL函数

Sybase ASA中查询元信息的几个常用SQL函数: sp_column_privileges Unsupported sp_columns table-name [, table-owner ] [, table-qualifier] [, column-name] 返回指定列的数据类型 sp_databases Unsupported sp_datatype_info Unsupported sp_fkeys pktable_name [, pktable-owner][, pktable

不同数据库中查询前几条记录的用法(SQL Server/Oracle/Postgresql)

SQL在不同数据库中查询前几条记录的用法分类 1. orACLE Select * FROM TABLE1 Where ROWNUM<=N 2. INFORMIX Select FIRST N * FROM TABLE1 3. DB2 Select * ROW_NUMBER() OVER(ORDER BY COL1 DESC) AS ROWNUM Where ROWNUM<=N 或者Select COLUMN FROM TABLE FETCH FIRST N ROWS ONLY 4. SQL

sqlserver中查询横表变竖表的sql语句简析

首先是三张表, CNo对应的是课程,在这里我就粘贴了. 主表 人名表 按照常规查询 SELECT s.SName, c.CName,s2.SCgrade FROM S s INNER JOIN SC s2 ON s2.SNo = s.SNo INNER JOIN C c ON c.CNo = s2.CNo 那么结果是这样的 但是这是横表 不是我想看到的结果. 我们要看到这样的结果: 那么怎么办呢?第一种写法: 复制代码 代码如下: SELECT w.SName, sum(case when w.

SQL 2005 中查询或执行另外的数据库操作的方法

原文:SQL 2005 中查询或执行另外的数据库操作的方法  摘要: 如果,你想在一台数据库服务器上,查询另一个台数据服务器的数据该如何做呢?如果,你想在同一台数据服务器上,在不同的数据库之间查询数据,又该怎么办呢? 1.Synonym 2.openquery 3.Linked Servers      Server Object-->Linked Servers--> serverType 选择 SQL Server, 在 Security 中 选择"Be made using t

jdbctemmple-在PLSQL中执行没问题,在JDBC中查询报列名无效

问题描述 在PLSQL中执行没问题,在JDBC中查询报列名无效 大家帮忙看看,这段SQL有什么问题,我在PLSQL中执行没问题,但是用JDBC查的时候就报列名无效的错误. select * from (select T_c_p_i.HOUSEHOLD_ID, T_c_p_i.HOUSEHOLD_HEAD_RELATIONSHIP, T_P_H_A.attribute_meaning as attribute_meaning, T_c_p_i.PERSON_NAME, T_c_p_i.GENDER

在Recordset对象中查询记录的方法

无论是 DAO 还是 ADO 都有两种从 Recordset 对象中查询记录的方法: Find 方法和 Seek 方法.在这两种方法中可以让你指定条件进行查询与其相应的记录 , 一般而言,在相同条件下, Seek 方法提供了比 Find 方法更好的性能,因为 Seek 方法是基于索引的.因为这个原因基本提供者必须支持 Recordset 对象上的索引,可以用 Supports ( adSeek ) 方法确定基本提供者是否支持 Seek ,用 Supports ( adIndex ) 方法确定提供

Access中查询某个分组中多行字段值的拼接字串的方法

access|分组         access的SQL语法中没有自定义函数,也不能象SQL Server中一样用变量.游标.子查询等方法来灵活处理查询语句.               但是,在Access环境中,透过模块中的过程,可利用功能强大的VB语言,生成复杂需求的查询语句.             下面是本人今天在Access版块中的一个回复,以此例子,简单说明Access依托VB所蕴含的强大功能.         网友提问:       -----------------------

VC中对注册表进行操作

近来由于需要在自己写的程序中对注册表进行操作.总结些经验,并做个一个DEMO供日后使用,现在把它拿出来和大家分享- 为了使用方便,把一些操作写成了函数,以便方便调用,具体代码如下所示: 一.定义 HKEY hKey; char content[256]; //所查询注册表键值的内容 DWORD dwType=REG_SZ; //定义读取数据类型 DWORD dwLength=256; struct HKEY__*RootKey; //注册表主键名称 TCHAR *SubKey; //欲打开注册表

看实例学VFP:用SELECT语句创建查询

vfp中可以使用sql语句操作表,并且在使用sql语句操作表时不需要打开数据库.本例介绍的是select查询语句(数据检索),关于select语句的格式请参考:select SQL 命令 或sql语言教程. 在看实例学VFP:对表中记录进行定位与查找操作一文中,我们是使用locate语句作记录定位并同时使用了eof()函数,如果该函数返回真值,说明数据表中不存在所查询的记录并给出提示信息.本例用sql语句对这一部分进行了改写.与上例的区别大致的如下: 1.本例依然使用表格控件作为数据显示控件,表