2016-01-23 76 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();