0

私はこれをdb.phpページに持っています:

function db_connect(){ $link = new mysqli(localhost, user, pass, table); }

そして、これは他のページにあります:

require_once("db.php");
function register($username, $email, $password){
        global $link;
        $query  = "INSERT INTO proyecto.user (username, password, email)
                  VALUES ('$username', '$password', '$email')";
        $result = mysqli_query($link, $query);
    }

しかし、「登録」を呼び出すと機能しません。関数「db_connect」をどのように呼び出す必要がありますか?

4

2 に答える 2

1

db_connect()返す$linkか、で$linkグローバルにしますdb_connect()

function db_connect() {
  return new mysqli(localhost, user, pass, table);
}

function register($username, $email, $password) {
  $link = db_connect();
  $query  = "INSERT INTO proyecto.user (username, password, email)
             VALUES ('$username', '$password', '$email')";
  $result = mysqli_query($link, $query);
}
于 2013-03-12T20:51:55.957 に答える
1

次のようにできます (PDO 接続):

// Usage:   $db = connectToDatabase($dbHost, $dbName, $dbUsername, $dbPassword);
// Pre:     $dbHost is the database hostname, 
//          $dbName is the name of the database itself,
//          $dbUsername is the username to access the database,
//          $dbPassword is the password for the user of the database.
// Post:    $db is an PDO connection to the database, based on the input parameters.
function connectToDatabase($dbHost, $dbName, $dbUsername, $dbPassword)
{
    try
    {
         return new PDO("mysql:host=$dbHost;dbname=$dbName;charset=UTF-8", $dbUsername, $dbPassword);
    }
    catch(PDOException $PDOexception)
    {
        exit("<p>An error ocurred: Can't connect to database. </p><p>More preciesly: ". $PDOexception->getMessage(). "</p>");
    }
}

そして、変数を初期化します。

$host = 'localhost';
$user = 'root';
$dataBaseName = 'databaseName';
$pass = '';

これで、次の方法でデータベースにアクセスできます

$db = connectToDatabase($host , $databaseName, $user, $pass); // You can make it be a global variable if you want to access it from somewhere else.

必要に応じて、グローバル変数にすることができます。

$GLOBALS['db'] = $db;

これは、あなたの場合の PDO データベース操作の例である pdo であることに注意してください。これは、準備されたステートメントを使用するため、SQL インジェクションから非常に安全であり、非常に使いやすいことに注意してください。

function register($username, $email, $password){
    $query = "INSERT INTO user (username, password, email) VALUES (:username, :password, :email)"; // Construct the query, making it accept a prepared variable search.
    $statement = $db->prepare($query); // Prepare the query.
    $result = $statement->execute(array(
        ':username' => $username, 
        ':password' => $password, 
        ':email' => $email
    )); // Here you insert the variable, by executing it 'into' the prepared query.
    if($result)
    {
        return true;
    }
    return false
}

そして、次のように呼び出すことができます:

$registerSuccess = register($username, $email, $password);
于 2013-03-12T20:53:11.370 に答える