为不同的查询创建php函数

时间:2014-12-17 18:59:36

标签: php mysql function

我有一个查询,我需要在具有不同varriables的页面中多次运行我需要帮助创建一个与此代码相同的函数:

    $type = "A";
    $getRecordsQuery = "SELECT * from records where domain_id=$domainID and type='". $type ."'" or die("Error:" . \mysqli_error($link));
    $result = mysqli_query($link, $getRecordsQuery);
    if ($result === FALSE) {
die("Error: " . mysqli_error($link));
    } else {
        echo "<table border='1'>
            <tr>
                <td>Name</td>
                <td>IP</td>
                <td>DynDNS</td>
                <td>TTL</td>
            </tr>";
            while ($row = mysqli_fetch_array($result)) {
                $name = $row["name"];
                $ip = $row["content"];
                $ttl = $row["ttl"];
                echo "<tr>
                    <td>". $name ."</td>
                    <td>". $ip ."</td>
                    <td>Off</td>
                    <td>". $ttl ."<td>
                </tr>";
            }
    echo "</table>";

基本上,它从数据库中查询表,并将所需信息放入表中。我需要这个函数来做同样的事情。

提前致谢。

2 个答案:

答案 0 :(得分:0)

您基本上将代码放在可以调用的功能块中 -

function getData($domainID, $domainType, $link) {
    $getRecordsQuery = "SELECT * from records where domain_id=$domainID and type='". $domainType ."'" or die("Error:" . \mysqli_error($link));
    $result = mysqli_query($link, $getRecordsQuery);
    if ($result === FALSE) {
        die("Error: " . mysqli_error($link));
    } else {
        $table = "<table border='1'>
            <tr>
                <td>Name</td>
                <td>IP</td>
                <td>DynDNS</td>
                <td>TTL</td>
            </tr>";
        while ($row = mysqli_fetch_array($result)) {
            $name = $row["name"];
            $ip = $row["content"];
            $ttl = $row["ttl"];
            $table .= "<tr>
                          <td>". $name ."</td>
                          <td>". $ip ."</td>
                          <td>Off</td>
                          <td>". $ttl ."<td>
                      </tr>";
        }
    $table .= "</table>";
    return $table;
}

然后你可以在传递域名时调用它并输入。

echo getData($fooID, $barType, $databaseConnection);

您还必须传入数据库连接,因为您可能已在此功能之外的某处建立了该连接。

通过了解prepared statements并使用它们来帮助预防SQL Injection等问题,可以大大改善这一点。

答案 1 :(得分:0)

此功能是您所需要的:

function getRecords($domainId, $type, $link) {
$getRecordsQuery = "SELECT * FROM records WHERE domain_id='".mysql_real_escape_string($domainId)."' AND type='".mysql_real_escape_string($type)."'";
$result = mysqli_query($link, $getRecordsQuery);
if (!$result){
    die("Error: " . mysqli_error($link));
} else{
    echo "<table border='1'>
            <tr>
                <td>Name</td>
                <td>IP</td>
                <td>DynDNS</td>
                <td>TTL</td>
            </tr>";
            while ($row = mysqli_fetch_array($result)) {
                $name = $row["name"];
                $ip = $row["content"];
                $ttl = $row["ttl"];
                echo "<tr>
                    <td>". $name ."</td>
                    <td>". $ip ."</td>
                    <td>Off</td>
                    <td>". $ttl ."<td>
                </tr>";
            }
    echo "</table>";
}
}

使用它:

getRecords(7, 'A', $link);

您应该将HTML代码与功能分开:

function getRecords($domainId, $type, $link) {
$getRecordsQuery = "SELECT * FROM records WHERE domain_id='".mysql_real_escape_string($domainId)."' AND type='".mysql_real_escape_string($type)."'";
$result = mysqli_query($link, $getRecordsQuery);
if (!$result){
    die("Error: " . mysqli_error($link));
} else{
    return $result;
}
}

在HTML中使用它:

<table border='1'>
        <tr>
            <td>Name</td>
            <td>IP</td>
            <td>DynDNS</td>
            <td>TTL</td>
        </tr>
    <?php
    $res = getRecords(7, 'A', $link);
    while ($row = mysqli_fetch_assoc($res)){
            $name = $row["name"];
            $ip = $row["content"];
            $ttl = $row["ttl"];
    ?>
            <tr>
                <td><?=$name ?></td>
                <td><?=$ip ?></td>
                <td>Off</td>
                <td><?=$ttl ?><td>
            </tr>
    <?php
    }
    ?>
    </table>