2016-12-05 34 views
-3

我想通過使用一個變量向我的mysql表中插入一個值,但我不能讓它工作,因爲它需要變量作爲一個空變量,我做了什麼錯誤?用php插入變量到我的mysql表中

<?php 
$conn=new mysqli("domain","user","password","database"); 
if($conn->connect_error) 
{ 
    die("Connection failed: " . $conn->connect_error); 
} 
$name ="test2"; 
$email="1234"; 
$password ="1234"; 
$sql="INSERT INTO android(name,email,password) values('$name','$email','$password')"; 

echo $sql; 
if ($conn->query($sql) === TRUE) { 
echo "New record created successfully"; 
} 
else { 
echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 
?> 

這給了我回應:

Error: insert into android(name,email,password) values('','','') Duplicate entry '' for key 'PRIMARY'

+2

和你的數據庫連接和您的查詢exection是哪裏? – donald123

+0

嘗試打印您的'$ sql'變量 –

+0

和db架構。 –

回答

0

我相信你仍然在學習PHP MySQL的過程。我給你的建議是停止本教程(S),你是目前使用mysqli或pdo開始學習準備好的語句,即使你在本地機器上練習,也不要以純文本存儲密碼,它更好地開始學習從單詞去做事情的正確方法..

PHP有驚人的功能來散列和保護你的密碼,password_hash() and password_verify()

您與mysqli的代碼編寫應該像

<?php 
$servername = "localhost"; 
$username = "user"; 
$password = "password"; 
$hash = password_hash($password,PASSWORD_DEFAULT); 
$dbname = "database"; 

$name ="test2"; 
$email="1234"; 
$password ="1234"; 
$hash=password_hash($password,PASSWORD_DEFAULT); 


$conn = new mysqli($servername, $username, $password, $dbname); 

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

// prepare and bind 
$stmt = $conn->prepare("INSERT INTO android (name,email,password) VALUES (?, ?, ?)"); 
$stmt->bind_param("sss", $name, $email, $hash); 
$stmt->execute(); 

echo "New records created successfully"; 

$stmt->close(); 
$conn->close(); 
?> 

你的錯誤是在電子郵件中你使你的表的主鍵重複,所以因此你需要檢查,如果該在插入之前,電子郵件不存在。

你正確的代碼應該是這樣的:

<? 

$sql = $con->prepare("SELECT email from android WHERE email = ? LIMIT 1"); 
$sql->bind_param('s', $email); 
$sql->execute(); 

$sql->bind_result($email); 
$sql->store_result(); 
if ($sql->num_rows == 1) //row exists 
    { 
    if ($sql->fetch()) //contents of the row 
     { 

     echo $email . "already registered"; 
    } 
} else { 
    //email does not exist lets insert 

    // prepare and bind 
    $sql = $conn->prepare("INSERT INTO android (name,email,password) VALUES (?, ?, ?)"); 
    $sql->bind_param("sss", $name, $email, $password); 


    $sql->execute(); 

    echo "New records created successfully"; 

    $sql->close(); 
    $conn->close(); 

} 
?>