Php SELECT语句中的交叉匹配表

Php SELECT语句中的交叉匹配表,php,mysql,pdo,Php,Mysql,Pdo,我有表一和表二。在两个表中,1字段都是comon。 例子: 表1“name”字段值与表2“studentname”字段值相同 现在,我希望能够在SELECT查询中通过交叉匹配获得数据 表1 表2 这就是我到目前为止所做的。不走运 foreach ($my_con->query("SELECT subject, examDate, table1.name, score, studentname FROM table1 JOIN table2 ON table1.name = tabl

我有表一和表二。在两个表中,1字段都是comon。 例子: 表1“name”字段值与表2“studentname”字段值相同

现在,我希望能够在SELECT查询中通过交叉匹配获得数据

表1

表2

这就是我到目前为止所做的。不走运

    foreach ($my_con->query("SELECT subject, examDate, table1.name, score, studentname FROM table1 JOIN table2 ON table1.name = table2.studentname SORT BY table2.score DESC") as $result){
            $gtname = $result['name'];
            $gtsubject = $result['subject'];
            $gtScore = $result['score'];
            $gtTIme = $result['date'];
} };

我希望echo是这样的:

Kyle   Science  89
JOHN   Science  78

查询中的结束报价位置可能是导致错误的原因。更改此项—

foreach ($my_con->query("SELECT subject, table1.name, score, studentname FROM table1 JOIN table2 ON table1.name = table2.studentname" SORT BY table2.score DESC) as $result){
为此—

foreach ($my_con->query("SELECT subject, table1.name, score, studentname FROM table1 JOIN table2 ON table1.name = table2.studentname SORT BY table2.score DESC") as $result){
您的查询中有错误的位置。应该是:

$my_con->query("SELECT subject, table1.name, score, studentname FROM table1 JOIN table2 ON table1.name = table2.studentname SORT BY table2.score DESC"

对于初学者来说,了解您是否收到语法错误、SQL错误等将有助于提供最准确的指导

我没有仔细检查语法,但是,假设您正在使用并且正确创建了数据库连接对象,那么在取消引用数组内容之前,您需要将结果作为关联列表获取:

$response = $my_con->query("SELECT subject, name, score from table1, table2 where name=studentname order by score DESC");

foreach ($response->fetch_assoc() as $result) {
    $gtname = $result['name'];
    $gtsubject = $result['subject'];
    $gtScore = $result['score'];
    echo ($gtname.$gtsubject.$gtScore);
}
SORT不是MySql关键字。您可能需要使用ORDER。
尝试使用数据库调试查询。如果您的查询不起作用,php代码只是一种干扰。

使用主键和外键引用键在这里是不必要的。你说不走运是什么意思。?您是否单独对数据库运行了查询?你有什么错误吗?您在tables2.studentname之后提前结束引号,这可能会导致语法错误。是的,我有。似乎什么也没发生。在没有交叉匹配的情况下,一切都可以工作。但是我希望能够交叉匹配数据。当您在数据库上运行查询时,它会工作吗?如果是这样,那么在其他地方就有问题了。检查你的服务器错误日志。我已经编辑了我的帖子。这是我的全部代码。查询交叉匹配并只调用60天以内的数据。我使用PDO。。。看来你漏掉了我的一大块代码。明白了。我看到PDO查询的返回结果是可遍历的,所以foreach不应该有问题。你能用你收到的错误来修饰你的问题吗?奇怪。我的建议是将查询结果存储在一个中间对象$results中,打印出count$results,以验证返回了多少记录,从而验证for循环的迭代次数,然后将foreach$results作为$result{…}执行。
$my_con->query("SELECT subject, table1.name, score, studentname FROM table1 JOIN table2 ON table1.name = table2.studentname SORT BY table2.score DESC"
$response = $my_con->query("SELECT subject, name, score from table1, table2 where name=studentname order by score DESC");

foreach ($response->fetch_assoc() as $result) {
    $gtname = $result['name'];
    $gtsubject = $result['subject'];
    $gtScore = $result['score'];
    echo ($gtname.$gtsubject.$gtScore);
}