Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取我的Sql错误_Php_Mysql - Fatal编程技术网

Php 获取我的Sql错误

Php 获取我的Sql错误,php,mysql,Php,Mysql,我试图找出这段代码中的错误,但无法使其正常工作 你能帮帮我吗 $email = $_SESSION['email']; $email = mysql_real_escape_string($email); $depst = "SELECT dept FROM stud_reg WHERE email='$email'"; $colls = "SELECT coll FROM stud_reg WHERE email='$email'"; $query="SELECT * FROM

我试图找出这段代码中的错误,但无法使其正常工作

你能帮帮我吗

$email = $_SESSION['email'];
$email = mysql_real_escape_string($email); 
$depst = "SELECT dept FROM  stud_reg WHERE email='$email'";     
$colls = "SELECT coll FROM  stud_reg WHERE email='$email'";
$query="SELECT * FROM  stud_reg WHERE coll='$coll' AND dept='$depst'";
$evesel="SELECT id FROM  events WHERE `group`='($depst)' AND coll_id='($colls)'";   
$studsel="SELECT drs_id FROM event_reg WHERE eve_id='$evesel'";
$query="select * from students WHERE nsite_id='$studsel'";
$result=mysql_query($query) or die(mysql_error());
$num=mysql_num_rows($result);
这是我得到的错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'k@***.com')' AND coll_id='(SELECT coll FROM stud_reg WHERE email='k@****' at line 1
PS-此代码中的所有表和行都会退出

像他的一样尝试

$query="select * from students WHERE nsite_id='$studsel';";
第一个查询从未实际执行过,而且您似乎覆盖了第一个$query。要么创建一个“连接”,要么使用子查询,比如

SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);

根据您收到的错误消息,我认为这只是关于单引号和双引号的问题。 这是正确的查询:

$email = $_SESSION['email'];
$email = mysql_real_escape_string($email); 
$depst = 'SELECT dept FROM  stud_reg WHERE email="$email"';     
$colls = 'SELECT coll FROM  stud_reg WHERE email="$email"';
$query="SELECT * FROM  stud_reg WHERE coll='$coll' AND dept='$depst'";
$evesel="SELECT id FROM  events WHERE `group`='($depst)' AND coll_id='($colls)'";   
$studsel="SELECT drs_id FROM event_reg WHERE eve_id='$evesel'";
$query="select * from students WHERE nsite_id='$studsel'";
$result=mysql_query($query) or die(mysql_error());
$num=mysql_num_rows($result);

在查询中添加引号时必须小心。

您尝试运行的查询是

select * from students WHERE nsite_id='SELECT drs_id FROM event_reg WHERE eve_id='SELECT id FROM  events WHERE `group`='(SELECT dept FROM  stud_reg WHERE email='$email')' AND coll_id='(SELECT coll FROM  stud_reg WHERE email='$email')'''
但这并不能满足您的期望,即使您确实解决了带引号字符串中带引号字符串的问题

我怀疑,相反,我希望将所有这些合并为联接,因此可能有点像:

选择s.* 从学生身上 内部加入事件\u注册为er 在er.drs_id=s.nsite_id上 内部将事件连接为e 在er.eve_id=e.id上 内连接螺柱\u注册为玻璃钢 关于grp.dept=e.group 和grp.coll=e.coll\u id 其中grp.email=“$email”
与SQL的任何语法错误一样,从PHP运行时,最好先在MySQL中运行查询,然后再尝试将其插入应用程序。

为什么不尝试单个查询。问题在于你的情况

$query = "SELECT * FROM students WHERE nsite_id =
    (   SELECT drs_id FROM event_reg WHERE eve_id = (
        SELECT id FROM  events WHERE
        `group` = (SELECT dept FROM  stud_reg WHERE email = '".$email."')
        AND
        coll_id = (SELECT coll FROM  stud_reg WHERE email = '".$email."')
        )
     )";
$result=mysql_query($query) or die(mysql_error());
$num=mysql_num_rows($result);

首先使用PDO或mysqli_*进行调试,然后执行echo$查询;你最好使用事先准备好的陈述。错误是因为在另一个单引号字符串“$depst”中使用了单引号字符串“$email”,您似乎根本没有执行前面的查询?您是否查看过,而不是重写查询,或者使用联接?这只是关于单引号和双引号的问题。嗯,您没有执行$query以上的任何查询。SQL错误是因为变量$studsel是字符串,所以$query是无效的SQL。不管怎样,看起来您可以只编写一个查询,将所有表连接在一起-就我个人而言,我会这样做,而不是尝试运行6个单独的查询。。。
$query = "SELECT * FROM students WHERE nsite_id =
    (   SELECT drs_id FROM event_reg WHERE eve_id = (
        SELECT id FROM  events WHERE
        `group` = (SELECT dept FROM  stud_reg WHERE email = '".$email."')
        AND
        coll_id = (SELECT coll FROM  stud_reg WHERE email = '".$email."')
        )
     )";
$result=mysql_query($query) or die(mysql_error());
$num=mysql_num_rows($result);