sql查询工作不正常:sql语法有错误;检查手册

wtzytmuj  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(331)

我是新来的php和试图使登录形式,但它显示了一个错误
查询数据库失败您的sql语法有错误;查看与您的mariadb服务器版本相对应的手册,以了解使用“form signup form where email=”附近的正确语法mail@mail.com'和psw='12345'(第1行)

  1. <?php
  2. $con = mysql_connect("localhost" , "root" , "");
  3. $db = mysql_select_db("jobportal" , $con);
  4. if(!$db)
  5. {
  6. echo mysql_error();
  7. }
  8. if(isset($_POST['login']))
  9. {
  10. $email = $_POST['email'];
  11. $psw = $_POST['psw'];
  12. $query = mysql_query("select * form signup-form where email = '$email'
  13. AND psw = '$psw'") or die ("Failed to query database".mysql_error());
  14. $row = mysql_fetch_array($query);
  15. if($email=="$email" && $psw=="$psw")
  16. header('location:index.php');
  17. }
  18. ?>
gwo2fgha

gwo2fgha1#

你的查询有拼写错误
改变

  1. select * form signup-form where email = '$email' AND psw = '$psw'

  1. select * from signup-form where email = '$email' AND psw = '$psw'

你曾经 form 而不是 from

zour9fqk

zour9fqk2#

有两个错误:
感谢@arun
你曾经 form 而不是 from 使用带有 - 因此,您需要在这个表名后面加一个记号 ``` .
所以你的问题应该是:

  1. select * from `signup-form` where email = '$email' AND psw = '$psw'

或者尝试(使用sql\u mode=ansi\u引号)

  1. select * from "signup-form" where email = '$email' AND psw = '$psw'

op在一个类似的问题中写道,添加数据库名称有帮助,因此您也可以尝试:

  1. select * from databasename.`signup-form` where email = '$email' and psw = '$psw'

(用表的正确数据库名称替换databasename)
请注意:显示的sql查询和代码易受sql注入攻击,这将导致错误和基于无效/错误用户输入的意外行为。
请阅读如何防止php中的sql注入?
从mariadb知识库:标识符名称:
以下字符有效,允许标识符不带引号:
ascii:[0-9,a-z,a-z$](数字0-9,基本拉丁字母,小写和大写,美元符号,下划线)
扩展:u+0080。。u+ffff型
(...)
引号字符
常规引号字符是反勾号字符- ``` ,但如果 ANSI_QUOTES 如果指定了sql\U模式选项,则使用常规双引号- " 也可以使用。

展开查看全部

相关问题