多个MYSQL语句作为单个语句执行

时间:2014-05-26 12:24:21

标签: php mysql post inner-join union

我的代码遇到了一些问题。我确信这很简单,但我无法弄清楚!我参加了大量的论坛并阅读了几本书...但我所做的每一个答案都失败了。我几乎保证它是我使用我的语法的方式(是的,我知道...程序化的PHP不再使用了)但我真的有点新手,我只是想尝试在进入OOP和PDO连接之前,先了解基础知识。

你能帮帮我吗?目前我可以让用户从日期选择器中选择他们的日期,具体来自该日期的结果将仅返回...唯一的问题是事件显示的是event_id而不是与之相关的事件的名称以(1 = 5km跑)为例。

不知何故,我需要访问事件表并拉出与该特定event_id相关的行。

我已对我的数据库进行了规范化,根据我的导师,它看起来还不错。让您了解它的样子 - 登录表(所有用户登录详细信息),结果表(已提交事件的历史记录)事件表(事件本身)。

在结果表中,外键是logins_id和event_id。主键是结果表中的results_id,此处存储的唯一数据是时间和数据(单个列)。

<?php // -----Stage 1. On submission of the form run the following -----//

    if (isset($_POST['submit_d'])) {
        $mydate = $_POST ['MyDate'];
        $my = preg_replace('/[^a-zA-Z0-9]+/', ' ', $mydate);

        if ($mydate)  {
            $result = mysql_query("SELECT * FROM logins WHERE username = '$username' LIMIT 1");

            //This function will take the above query and create an array...
            while($row = mysql_fetch_array($result))
            {
                //With the array created above, I can create variables (left) with the outputted array (right)
                $logins_id3 = $row['logins_id'];
            }

            $sql = "SELECT * FROM results where $logins_id3 AND date = $mydate ";

            /* ----- Here is the code that I want to use in conjunction with the above statement --->

            $query = "SELECT logins.username,events.event,results.time,results.date,logins.age,logins.gender
                FROM logins INNER JOIN results ON logins.logins_id=results.logins_id INNER JOIN events ON results.event_id=events.event_id 
                ORDER BY time ASC LIMIT 10";

            */

            $resultz = mysql_query($sql);

            if( mysql_num_rows($resultz) ) {

                while ($row = mysql_fetch_array($resultz))  {
                    echo "<table><tr><th>Username</th><th>Event</th><th>Time (HH:MM:SS)</th><th>Date (YY/MM/DD)</th><th>Age</th><th>Gender</th>
                        </tr><tr><td>".$username."</td>"
                        ."<td>".$row['event_id']."</td>"."<td>".$row['time']."</td>"." <td>".$row['date']."</td>"."<td>".$row['age']."</td>".
                        "<td>" $row['gender']."</td></tr></table>"; 
                }   
            }
        }
    }
?>

我想做的另一件事......虽然这不是至关重要的,但是要从输入中删除特殊字符。基本上我使用jquery日历选择器,我希望用户能够选择2014-05-26格式的日期和php删除 - 在提交到数据库之前,这样就不会#39; t影响用户体验,但它可以使用我当前的代码。

无论如何不好意思,对这两方面的任何帮助都会非常感激!

您诚挚的:

彼得斯卡尔斯。

1 个答案:

答案 0 :(得分:0)

您可以使用联接来获取与事件ID相关的数据:

SELECT * FROM results r LEFT JOIN events e ON r.event_id = e.event_id WHERE ...

然后您可以选择“e.event_id = $ event_id”的位置;和其余的查询逻辑。

您还可以使用preg_replace:http://ar2.php.net/preg_replace

过滤掉任何不需要的字符