2016-01-23 74 views
-2

我想插入數據到數據庫中。但是當我點擊保存按鈕比數據沒有去在database.i不明白我在哪裏做錯了。這是我的PHP代碼:數據沒有輸入數據庫使用php

<?php 
$host = "localhost"; 
$user = "root"; 
$password =""; 
$database = "crud"; 
$conn = new mysqli($host, $user, $password); 
mysql_select_db($database); 

if(isset($_POST['btn-save'])) 
{ 
$first_name = $_POST['first_name']; 
$last_name = $_POST['last_name']; 
$city_name = $_POST['city_name']; 
$sql_query ="INSERT INTO users(first_name,last_name,user_city) VALUES('$first_name','$last_name','$city_name')"; 
    mysql_query($sql_query); 
} 
?> 
+4

的可能的複製[我可以混用MySQL中的API?](http://stackoverflow.com/questions/17498216/can-i-mix-mysql-apis-in-php) –

+1

你在混合mysqli和mysql – RamRaider

回答

1

你混合mysqlimysql方法〜忽略現已棄用mysql_*套件的功能和集中mysqli - 瞭解預處理語句,如果你想防止SQL注入。

希望以下內容應該插入數據。

<?php 
    $host = "localhost"; 
    $user = "root"; 
    $password = ""; 
    $database = "crud"; 

    $conn = new mysqli($host, $user, $password, $database); 

    if(isset($_POST['btn-save'])){ 
     $first_name = $_POST['first_name']; 
     $last_name = $_POST['last_name']; 
     $city_name = $_POST['city_name']; 

     $sql ="INSERT INTO `users` (`first_name`,`last_name`,`user_city`) VALUES ('{$first_name}', '{$last_name}', '{$city_name}')"; 
     $res=$conn->query($sql); 
     if($res){ 
      /* all good */ 
     } 
     $conn->close(); 
    } 
?> 

我提到prepared statements - 以下可以使用(希望沒有問題)代替上述$conn->query()的!其基本思想是,你在SQL語句中使用佔位符,然後綁定變量的佔位符 - 無論你是否相信這個方法將大大降低SQL注入的任何機會;/

$sql = "INSERT INTO `users` (`first_name`,`last_name`,`user_city`) VALUES (?, ?, ?)"; 

    $stmt = $conn->prepare($sql); 
    $stmt->bind_param('sss',$first_name,$last_name,$city_name); 
    $res=$stmt->execute(); 

    if($res){ 
     /* all good ~ display a message or set a var etc */ 
     $stmt->close(); 
    } 
    $conn->close();