更改代码以将mySQL链接到函数中

时间:2015-10-20 14:07:42

标签: php

我是php的新手。我有这段代码:

<?php 
if (!isset($_GET['id'])) {
    die("missing query parameter");
}
$id = intval($_GET['id']);
if ($id === '') {
    die("Invalid query parameter");
}

$db = mysql_connect("localhost", "root", "usbw");
$sdb = mysql_select_db("test", $db);
$sql = "SELECT * FROM config WHERE id=$id";
$mq = mysql_query($sql) or die("not working query");
$row = mysql_fetch_array($mq);
?>

从这段代码中,我想创建一个函数,但是如何? 我想要做的是将我的MySQL数据库链接到我的PHP代码,如果更改了我的ID,我也会尝试使用GET[id]自动更改我的页面。

这段代码确实有用,但我想把它改成一个函数。但我不知道如何开始。

2 个答案:

答案 0 :(得分:1)

以下是查询功能的示例,请注意,这只是一个示例,因为要做出许多改进。
例如,不使用mysql_* api并转向PDOmysqli_*

但它应该足以让你开始

<?php

// your if logic stays unchanged

$db=mysql_connect("localhost","root","usbw");
$sdb=mysql_select_db("test",$db);


function getConfig($id,$db){

    $sql="SELECT * FROM config WHERE id=$id";
    $mq=mysql_query($sql);

    if ($mq) {
        return mysql_fetch_array($mq);
    }
    else {
        return false;
    }

}

$results = getConfig($id,$db);

if ($results==false) {
    print "the query failed";
}
else var_dump($results);

答案 1 :(得分:0)

您可以创建一个名为db.php的文件,其中包含一些常见的数据库函数,以便您可以更轻松地使用它们:

<?php
function db_connection() {
    //SERVER, USER, MY_PASSWORD, MY_DATABASE are constants
    $connection = mysqli_connect(SERVER, USER, MY_PASSWORD, MY_DATABASE);
    mysqli_set_charset($connection, 'utf8');
    if (!$connection) {
        die("Database connection failed: " . mysqli_error());
    }
    return $connection;
}

function db_selection() {
    $db_select = mysqli_select_db(MY_DATABASE, db_connection());
    if (!$db_select) {
        die("Database selection failed: " . mysqli_error());
    }
    return $db_select;
}

function confirm_query($connection, $result_set) {
    if (!$result_set) {
        die("Database error: " . mysqli_error($connection));
    }
}

function q($connection, $query) {
    $result = mysqli_query($connection, $query);
    confirm_query($connection, $result);
    return $result;
}
?>

然后,您可以将代码放在其他一些文件中:

<?php
require_once('db.php'); //This file is required

$id = $_GET['id']; //Shorthand the $_GET['id'] variable
if (!isset($id)) {
    die("missing query parameter");
}
if ( filter_var($id, FILTER_VALIDATE_INT) === false) ) {
    die("Invalid query parameter");
}
$sql = "SELECT * FROM config WHERE id = '$id'";
$result = q($connection, $sql);
while ($row = mysqli_fetch_array($result)) {
    //Do something
}
?>

尽量不要使用mysql_ *函数,因为它们已被弃用。使用mysqli_ *甚至可以更好地了解准备好的语句或PDO。