2016-08-17 3 views
-2

私はテーブルを作成し、2人のユーザーでそれを設定する必要がある次のコードを持っています。 create tableクエリは機能しますが、挿入は行いません。どんな助けもありがとう。MySQLテーブルにPHP変数を挿入するにはどうすればよいですか?

<?php 
    require_once 'login12.php'; 
    $link = mysqli_connect($db_hostname, $db_username, $db_password); 
    if (!$link) die ("Unable to connect to MySQL: " .mysqli_error()); 
    mysqli_select_db($link, $db_database) or die("Unable to select database: "  .mysqli_error()); 
$query = "CREATE TABLE `users` (
     forename VARCHAR(32) NOT NULL, 
     surname VARCHAR(32) NOT NULL, 
     username VARCHAR(32) NOT NULL UNIQUE, 
     password VARCHAR(32) NOT NULL)"; 
$result = mysqli_query($link, $query); 
if (!$result) die ("Database access failed: " .mysqli_error()); 
$salt1 = 'G3tD0wnonIT!'; 
$salt2 = 'Y0uwant2'; 
$forename = 'Bill'; 
$surname = 'Smith'; 
$username = 'bsmith'; 
$password = 'mysecret'; 
$token = sha1("$salt2$password$salt1"); 
add_user($forename, $surname, $username, $token); 
$forename = 'Pauline'; 
$surname = 'Jones'; 
$username = 'pjones'; 
$password = 'acrobat'; 
$token = sha1("$salt2$password$salt1"); 
add_user($forename, $surname, $username, $token); 
function add_user($fn, $sn, $un, $pw) { 
    $query = "INSERT INTO `users` (`forename`, `surname`, `username`, `password`) VALUES ('$fn', '$sn', '$un', '$pw')"; 
    $result = mysqli_query($link, $query); 
    if (!$result) die ("Database access failed: " .mysqli_error()); 
} 
?> 

答えて

1

$linkそれはそれへのアクセス権を持っていないので、あなたの関数の範囲外です。関数のパラメータとして渡す必要があります。

add_user($link, $forename, $surname, $username, $token); 
function add_user($link, $fn, $sn, $un, $pw) { 
    $query = "INSERT INTO `users` (`forename`, `surname`, `username`, `password`) VALUES ('$fn', '$sn', '$un', '$pw')"; 
    $result = mysqli_query($link, $query); 
    if (!$result) die ("Database access failed: " .mysqli_error($link)); 
} 
+0

おかげで、それはまだ:(私は私の例では、エラーをした –

+0

@vaughnjoviを動作しません。私が提供更新されたコードを試してみて、それがあなたのために働くかどうかを確認。 –

+0

私はすでにあなたのコメントの前にあることを試してみました –

-1

私の以前のポスターは、$ linkがあなたの機能の範囲にないことをすでに指摘しました。私は関数のパラメータとして$ linkを与えることよりもグローバルなステートメントを使用することをお勧めします。なぜなら、そのクリーナーは毎回それを渡す必要がないからです。

add_user($forename, $surname, $username, $token); 
function add_user($fn, $sn, $un, $pw) { 
    global $link; 

    $query = "INSERT INTO `users` (`forename`, `surname`, `username`, `password`) VALUES ('$fn', '$sn', '$un', '$pw')"; 
    $result = mysqli_query($link, $query); 
    if (!$result) die ("Database access failed: " .mysqli_error()); 
} 
+0

'global'の使用は非常に悪い習慣であり、奨励されるべきではありません。それは*クリーナーではありません。使用しないでください。 –

+0

このようなもののために、そのokのimo、少なくともあなたはそのような場合にはさらに悪い毎回それを渡す必要はありません。 –

+0

これは実際には非常に怠惰です。それをパラメータとして渡すことは* trivial *であり、その関数が動作するために必要なものを関数シグネチャで明確にします。グローバルを使用することは、バグを見つけにくく、テストが難しくなります。彼らは避けるべきです.. –

関連する問題