从字符串参数 mySQL PHP 获取变量



我在为指定的事件 ID 实现记录结果时遇到一些问题。它需要能够做到 - 页面底部列出的事件条目应包括超链接,将管理员带到用于记录该事件结果的新 Web 表单。这EventID 通过查询字符串参数传递,例如 RecordResults.php?事件 ID = 4。

目前,我有以下代码要显示:

将数据记录到数据库中

   <?php
mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("clubresults") or die(mysql_error());
if (isset($_POST['submit'])) {    
$EventDate = date('D-m-y', $EventDate);
$sql="INSERT INTO events (EventName, EventDate, Location)
VALUES
('".$_POST['EventName']."', '".$EventDate."', '".$_POST['EventLocation']."')";
$add_event = mysql_query($sql);
echo "Successfully Added 1 Event";
}
?>

HTML 表单 + 从 MySQL 数据库生成表 -

<h2> Add Event To Database </h2>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Event Name: <input type="text" name="EventName" /><br>
Event Date: <input type="text" name="EventDate" /><br>
Event Location: <input type="text" name="EventLocation" /><br>
<input type="submit" name="submit" value="Add Event" />
</form>
<?php
$query = "SELECT * FROM events";
$result = mysql_query($query) or die ('Error in Query');
echo '<table width=100% border=1>';
echo '<tr><td><b>Event ID</b></td><td><b>Event Name</td><td><b>Event Date</b></td><td><b>Event Location</b></td><td><b> Record Results</b></td></tr>';
while ($row=mysql_fetch_row($result))
{
echo '<tr>';
echo '<td>'.$row[0].'</td>';
echo '<td>'.$row[1].'</td>';
echo '<td>'.$row[2].'</td>';
echo '<td>'.$row[3].'</td>';

echo '</tr>';
}
echo '</table>';
mysql_free_result($result);

?>

我也一直在研究这个问题,但是不确定如何使用它为传递 URL 字符串的表中的每一行制作添加结果超链接。

    // Get id from URL
$id = mysql_real_escape_string( $_GET['EventID'] );
// If id is number
if( (int)$id== $id && (int)$id> 0 ) {
     // Get record from database
     $sql = 'SELECT * FROM Evernts WHERE EventID=' . $id;
     $result = mysql_query( $sql, $link );    
     $row = mysql_fetch_array( $result );
     // Show record with HTML here - Need to show it in the table!
     print_r( $row );
} else {
   echo "Record not found";
}

任何帮助将不胜感激!

谢谢:D

这里有一些建议的答案。

  • 当你命名事物时,尽量保持一致。您有以大写字母开头的变量,例如 $EventDate ,有些不像$result,有些带有下划线$add_event。使用驼峰大小写来命名变量。数据库中的表列名称也是如此:您有事件名称、事件日期,然后是位置...
  • 试着理解你的工作.PHP有点宽容,不会像$EventDate = date('D-m-y', $EventDate);这样的指示抱怨。您不需要声明变量,因此它将计算$EventDate为 0 ($EventDate = date('D-m-y', 0) (。如果您不知道函数的作用或如何使用它,请阅读手册。
  • 不要在选择查询中使用星号字符。显式命名要检索的所有列。
  • 你必须学习过时的PHP做事方式,这对你的老师来说是一种耻辱。因此,请注意更好的解决方案,例如PDO和准备好或引用的陈述。

据我了解,您希望在 HTML 表中显示数据库中的所有事件。
并有可能通过表单添加事件。您还希望将事件链接到记录结果页面,将事件 ID 作为 URL 中的参数传递(您不清楚这一点(。索引.php

    mysql_connect("localhost", "root", "") or die(mysql_error()); 
    mysql_select_db("clubresults") or die(mysql_error());
    if (isset($_POST['submit'])) 
    {   
        $eventName = mysql_real_escape_string($_POST['EventName']);
        $eventLocation = mysql_real_escape_string($_POST['EventLocation']);
                    // if you want to retrieve the date via the form 
                    // you have to check the format so that it corresponds to 
                    // what your date column expects (default format is Y-m-d)
        $eventDate = date('Y-m-d');
        $sql = "
            INSERT INTO events (EventName, EventDate, EventLocation)
            VALUES (
                '" . $eventName . "', 
                '" . $eventDate . "', 
                '" . $eventLocation . "'
            )";
        $addEventQueryResult = mysql_query($sql);
        if ($addEventQueryResult)
        {
            echo "Successfully added 1 event";
        }
        else 
        {
            echo "Error adding the event";
        }
    }
    ?>
    <h2>Add Event To Database</h2>
    <form action="index.php" method="post">
        Event Name: <input type="text" name="EventName" /><br>
        Event Date: <input type="text" name="EventDate" /><br>
        Event Location: <input type="text" name="EventLocation" /><br>
        <input type="submit" name="submit" value="Add Event" />
    </form>
    <?php
    $query = "
        SELECT EventId, EventName, EventDate, EventLocation 
        FROM events";
    $result = mysql_query($query) or die ('Error in Query');
    echo '<table width="100%" border="1">';
    echo '
        <tr>
            <th>Event ID</th>
            <th>Event Name</th>
            <th>Event Date</th>
            <th>Event Location</th>
            <th>Record Results</th>
        </tr>';
    while ($row = mysql_fetch_assoc($result))
    {
        $addResultLink = 
                '<a href="recordResults.php?EventId=' . 
                $row['EventId'] . 
                '">Add Results</a>';
        echo '<tr>' 
                . '<td>' . $row['EventId'] . '</td>' 
                . '<td>' . $row['EventName'] . '</td>'
                . '<td>' . $row['EventDate'] . '</td>' 
                . '<td>' . $row['EventLocation'] . '</td>' 
                . '<td>' . $addResultLink . '</td>' 
           . '</tr>';
    }
    echo '</table>';
    mysql_free_result($result);
    ?>

下面是 recordResults.php它根据 URL 中的事件 ID 检索事件,并使用与上述相同的 HTML 表显示事件。接下来做任何你想做的事。注意:此代码应重构,以便您不会两次编写相同的 HTML 表。

<?php
    date_default_timezone_set('Europe/Paris'); 
    mysql_connect("localhost", "root", "sqlflo54") or die(mysql_error()); 
    mysql_select_db("clubresults") or die(mysql_error());
    // Get id from URL
    $id = mysql_real_escape_string($_GET['EventId']);
    // If id is number
    if ($id > 0) 
    {
         // Get record from database
         $sql = "
            SELECT EventId, EventName, EventDate, EventLocation 
            FROM events 
            WHERE EventId = " . $id;
         $result = mysql_query($sql);    
         echo '<table width="100%" border="1">';
         echo '
            <tr>
                <th>Event ID</th>
                <th>Event Name</th>
                <th>Event Date</th>
                <th>Event Location</th>
            </tr>';
         while ($row = mysql_fetch_assoc($result))
         {
            echo '<tr>' 
                    . '<td>' . $row['EventId'] . '</td>' 
                    . '<td>' . $row['EventName'] . '</td>'
                    . '<td>' . $row['EventDate'] . '</td>' 
                    . '<td>' . $row['EventLocation'] . '</td>'  
               . '</tr>';
         }
         echo '</table>';
         mysql_free_result($result);
    } 
    else 
    {
       echo "Record not found";
    }
?>

我希望这最终能帮助你理解你想做什么。不要复制和粘贴此代码,因为我更改了一些变量名称以坚持上述建议。