2016-05-21 20 views
5

Tôi đã tạo một bảng users trong số mysql từ thiết bị đầu cuối và tôi đang cố tạo nhiệm vụ đơn giản: chèn các giá trị từ biểu mẫu. Đây là của tôi dbConfig filePHP: Chèn các giá trị từ biểu mẫu vào MySQL

<?php 
$mysqli = new mysqli("localhost", "root", "pass", "testDB"); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 
?> 

và Đây là Index.php của tôi.

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <meta name="description" content="$1"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 

    <link rel="stylesheet" type="text/css" href="style.css"> 

    <title>test</title> 

    <?php 
    include_once 'dbConfig.php'; 
    ?> 

</head> 
<body> 
    <?php 
    if(isset($_POST['save'])){ 
     $sql = "INSERT INTO users (username, password, email) 
     VALUES ('".$_POST["username"]."','".$_POST["password"]."','".$_POST["email"]."')"; 
    } 

    ?> 

    <form method="post"> 
    <label id="first"> First name:</label><br/> 
    <input type="text" name="username"><br/> 

    <label id="first">Password</label><br/> 
    <input type="password" name="password"><br/> 

    <label id="first">Email</label><br/> 
    <input type="text" name="email"><br/> 

    <button type="submit" name="save">save</button> 
    <button type="submit" name="get">get</button> 
    </form> 

</body> 
</html> 

Sau khi nhấn nút lưu, không có gì xảy ra, cơ sở dữ liệu vẫn trống. Tôi đã thử truy vấn echo'ing truy vấn INSERT và nó lấy tất cả các giá trị từ biểu mẫu như được cho là. Sau khi tôi cố gắng kiểm tra xem điều này có làm việc từ thiết bị đầu cuối hay không, tôi đăng nhập vào số sql cố gắng trả lại tất cả dữ liệu từ bảng người dùng và tôi nhận được bộ trống.

+0

chức năng sử dụng mysqli_query để thực hiện truy vấn SQL – UserName

+0

Mã của bạn chỉ là 'echo'ing một truy vấn SQL ... –

+1

Bạn cần cho' mysqli_query ($ mysqli, $ sql); ' truy vấn. Bạn hiện đang chỉ 'echo'ing truy vấn, mà về cơ bản chỉ là kết quả đầu ra nó vào màn hình. – Qirel

Trả lời

7

Các mã sau chỉ khai báo một biến chuỗi có chứa một truy vấn MySQL:

$sql = "INSERT INTO users (username, password, email) VALUES ('".$_POST["username"]."','".$_POST["password"]."','".$_POST["email"]."')";

Nó không thực hiện truy vấn. Để làm được điều đó, bạn cần phải sử dụng một số chức năng nhưng hãy để tôi giải thích điều gì khác trước.

KHÔNG BAO GIỜ TRUST USER Input: Bạn không bao giờ nên nối thêm đầu vào người sử dụng (ví dụ như hình thức đầu vào từ $_GET hoặc $_POST) trực tiếp để truy vấn của bạn. Ai đó có thể thao tác cẩn thận đầu vào theo cách sao cho nó có thể gây ra thiệt hại lớn cho cơ sở dữ liệu của bạn. Đó được gọi là SQL Injection. Bạn có thể đọc thêm về nó here

Để bảo vệ tập lệnh của bạn khỏi cuộc tấn công như vậy, bạn phải sử dụng Báo cáo được chuẩn bị. Thông tin thêm về chuẩn bị phát biểu here

Bao gồm báo cáo chuẩn bị để mã của bạn như thế này:

$sql = "INSERT INTO users (username, password, email) VALUES (?,?,?)"

Thông báo như thế nào ? được sử dụng như giữ chỗ cho các giá trị. Tiếp theo, bạn nên chuẩn bị báo cáo kết quả sử dụng mysqli_prepare:

$stmt = mysqli_prepare($sql);

Sau đó bắt đầu ràng buộc các biến đầu vào để báo cáo kết quả chuẩn bị:

$stmt->bind_param("sss", $_POST['username'], $_POST['email'], $_POST['password']);

Và cuối cùng thực hiện những điều khoản được chuẩn bị. (Đây là nơi mà sự chèn thực tế diễn ra)

$stmt->execute();

LƯU Ý Mặc dù không phải là một phần của câu hỏi, tôi mạnh mẽ khuyên bạn không bao giờ lưu trữ mật khẩu trong văn bản rõ ràng. Thay vào đó, bạn nên sử dụng password_hash để lưu trữ mã băm của mật khẩu

+2

Cảm ơn bạn đã trả lời chi tiết như vậy. Tôi chắc chắn sẽ xem xét điều đó, vì đây là nỗ lực đầu tiên của tôi trên PHP Tôi chỉ tập trung vào chức năng, nhưng tôi sẽ cố gắng cải thiện trong tương lai. – notrealme

+0

@notrealme nếu bạn mới bắt đầu, tôi thực sự khuyên bạn nên xem PDO. Nó dễ sử dụng hơn mysqli, đặc biệt là với các câu lệnh chuẩn bị. – miken32

+0

Tôi đã thử điều này và nhận được một lỗi phàn nàn rằng mysqli_prepare yêu cầu 2 tham số. –

0
<?php 
    if(isset($_POST['save'])){ 
     $sql = "INSERT INTO users (username, password, email) 
     VALUES ('".$_POST["username"]."','".$_POST["password"]."','".$_POST["email"]."')"; 
    } 
    **mysql_query($sql) or die(mysql_error());** 


?> 
+1

Bạn có thể giải thích cách câu trả lời giải quyết (các) vấn đề từ câu hỏi không? Câu trả lời chỉ có mã không phải là rất hữu ích, đặc biệt là cho độc giả tiếp tục vấp ngã khi đăng bài này. Cảm ơn! – Cristik

3

Có hai vấn đề trong mã của bạn.

  1. Không tìm thấy hành động nào trong biểu mẫu.
  2. Bạn chưa thực hiện truy vấn mysqli_query()

dbConfig.php

<?php 

$conn=mysqli_connect("localhost","root","password","testDB"); 

if(!$conn) 
{ 
die("Connection failed: " . mysqli_connect_error()); 
} 

?> 

index.php

include('dbConfig.php'); 

<!Doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
<meta name="description" content="$1"> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 

<link rel="stylesheet" type="text/css" href="style.css"> 

<title>test</title> 


</head> 
<body> 

<?php 

    if(isset($_POST['save'])) 
{ 
    $sql = "INSERT INTO users (username, password, email) 
    VALUES ('".$_POST["username"]."','".$_POST["password"]."','".$_POST["email"]."')"; 

    $result = mysqli_query($conn,$sql); 
} 

?> 

<form action="index.php" method="post"> 
<label id="first"> First name:</label><br/> 
<input type="text" name="username"><br/> 

<label id="first">Password</label><br/> 
<input type="password" name="password"><br/> 

<label id="first">Email</label><br/> 
<input type="text" name="email"><br/> 

<button type="submit" name="save">save</button> 

</form> 

</body> 
</html> 
+0

Đây là lỗ hổng bảo mật .. – proofzy

0

Hãy thử điều này:

dbConfig.php

<?php 
$mysqli = new mysqli('localhost', 'root', 'pwd', 'yr db name'); 
    if($mysqli->connect_error) 
     { 
     echo $mysqli->connect_error; 
     } 
    ?> 

index.php

<html> 
<head><title>Inserting data in database table </title> 
</head> 
<body> 
<form action="control_table.php" method="post"> 
<table border="1" background="red" align="center"> 
<tr> 
<td>Login Name</td> 
<td><input type="text" name="txtname" /></td> 
</tr> 
<br> 
<tr> 
<td>Password</td> 
<td><input type="text" name="txtpwd" /></td> 
</tr> 
<tr> 
<td>&nbsp;</td> 
<td><input type="submit" name="txtbutton" value="SUBMIT" /></td> 
</tr> 
</table> 
control_table.php 
<?php include 'config.php'; ?> 
<?php 
$name=$pwd=""; 
    if(isset($_POST['txtbutton'])) 
     { 
      $name = $_POST['txtname']; 
      $pwd = $_POST['txtpwd']; 
      $mysqli->query("insert into users(name,pwd) values('$name', '$pwd')"); 
     if(!$mysqli) 
     { echo mysqli_error(); } 
    else 
    { 
     echo "Successfully Inserted <br />"; 
     echo "<a href='show.php'>View Result</a>"; 
    } 

     } 

    ?> 
+1

Mã chỉ câu trả lời không phải là rất hữu ích. Bạn có thể giải thích câu trả lời này mang đến chủ đề gì không? –

1
<?php 
    $username="root"; 
    $password=""; 
    $database="test"; 

    #get the data from form fields 
    $Id=$_POST['Id']; 
    $P_name=$_POST['P_name']; 
    $address1=$_POST['address1']; 
    $address2=$_POST['address2']; 
    $email=$_POST['email']; 

    mysql_connect(localhost,$username,$password); 
    @mysql_select_db($database) or die("unable to select database"); 

    if($_POST['insertrecord']=="insert"){ 
     $query="insert into person values('$Id','$P_name','$address1','$address2','$email')"; 
     echo "inside"; 
     mysql_query($query); 
     $query1="select * from person"; 
     $result=mysql_query($query1); 
     $num= mysql_numrows($result); 

     #echo"<b>output</b>"; 
     print"<table border size=1 > 
     <tr><th>Id</th> 
     <th>P_name</th> 
     <th>address1</th> 
     <th>address2</th> 
     <th>email</th> 
     </tr>"; 
     $i=0; 
     while($i<$num) 
     { 
      $Id=mysql_result($result,$i,"Id"); 
      $P_name=mysql_result($result,$i,"P_name"); 
      $address1=mysql_result($result,$i,"address1"); 
      $address2=mysql_result($result,$i,"address2"); 
      $email=mysql_result($result,$i,"email"); 
      echo"<tr><td>$Id</td> 
      <td>$P_name</td> 
      <td>$address1</td> 
      <td>$address2</td> 
      <td>$email</td> 
      </tr>"; 
      $i++; 
     } 
     print"</table>"; 
    } 

    if($_POST['searchdata']=="Search") 
    { 
     $P_name=$_POST['name']; 
     $query="select * from person where P_name='$P_name'"; 
     $result=mysql_query($query); 
     print"<table border size=1><tr><th>Id</th> 
     <th>P_name</th> 
     <th>address1</th> 
     <th>address2</th> 
     <th>email</th> 
     </tr>"; 
     while($row=mysql_fetch_array($result)) 
     { 
      $Id=$row[Id]; 
      $P_name=$row[P_name]; 
      $address1=$row[address1]; 
      $address2=$row[address2]; 
      $email=$row[email]; 
      echo"<tr><td>$Id</td> 
      <td>$P_name</td> 
      <td>$address1</td> 
      <td>$address2</td> 
      <td>$email</td> 
      </tr>"; 
     } 
     echo"</table>"; 
    } 
    echo"<a href=lab2.html> Back </a>"; 
?> 
0
<!DOCTYPE html> 
<?php 
$con = new mysqli("localhost","root","","form"); 

?> 



<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Untitled Document</title> 
<script type="text/javascript"> 
$(document).ready(function(){ 
//$("form").submit(function(e){ 

    $("#btn1").click(function(e){ 
    e.preventDefault(); 
    // alert('here'); 
     $(".apnew").append('<input type="text" placeholder="Enter youy Name" name="e1[]"/><br>'); 

    }); 
    //} 
}); 
</script> 

</head> 

<body> 
<h2><b>Register Form<b></h2> 
<form method="post" enctype="multipart/form-data"> 
<table> 
<tr><td>Name:</td><td><input type="text" placeholder="Enter youy Name" name="e1[]"/> 
<div class="apnew"></div><button id="btn1">Add</button></td></tr> 
<tr><td>Image:</td><td><input type="file" name="e5[]" multiple="" accept="image/jpeg,image/gif,image/png,image/jpg"/></td></tr> 

<tr><td>Address:</td><td><textarea cols="20" rows="4" name="e2"></textarea></td></tr> 
<tr><td>Contact:</td><td><div id="textnew"><input type="number" maxlength="10" name="e3"/></div></td></tr> 
<tr><td>Gender:</td><td><input type="radio" name="r1" value="Male" checked="checked"/>Male<input type="radio" name="r1" value="feale"/>Female</td></tr> 
<tr><td><input id="submit" type="submit" name="t1" value="save" /></td></tr> 
</table> 
<?php 
//echo '<pre>';print_r($_FILES);exit(); 
if(isset($_POST['t1'])) 
{ 
$values = implode(", ", $_POST['e1']); 
$imgarryimp=array(); 
foreach($_FILES["e5"]["tmp_name"] as $key=>$val){ 


move_uploaded_file($_FILES["e5"]["tmp_name"][$key],"images/".$_FILES["e5"]["name"][$key]); 

        $fname = $_FILES['e5']['name'][$key]; 
        $imgarryimp[]=$fname; 
        //echo $fname; 

        if(strlen($fname)>0) 
         { 
         $img = $fname; 
         } 
         $d="insert into form(name,address,contact,gender,image)values('$values','$_POST[e2]','$_POST[e3]','$_POST[r1]','$img')"; 

     if($con->query($d)==TRUE) 
     { 
     echo "Yoy Data Save Successfully!!!"; 
     } 
} 
exit; 





         // echo $values;exit; 
         //foreach($_POST['e1'] as $row) 
    //{ 

    $d="insert into form(name,address,contact,gender,image)values('$values','$_POST[e2]','$_POST[e3]','$_POST[r1]','$img')"; 

     if($con->query($d)==TRUE) 
     { 
     echo "Yoy Data Save Successfully!!!"; 
     } 
    //} 
    //exit; 


} 
?> 

</form> 

<table> 
<?php 
$t="select * from form"; 
$y=$con->query($t); 
foreach ($y as $q); 
{ 
?> 
<tr> 
<td>Name:<?php echo $q['name'];?></td> 
<td>Address:<?php echo $q['address'];?></td> 
<td>Contact:<?php echo $q['contact'];?></td> 
<td>Gender:<?php echo $q['gender'];?></td> 
</tr> 
<?php }?> 
</table> 

</body> 
</html> 
+1

Trong khi mã này có thể trả lời câu hỏi, cung cấp ngữ cảnh bổ sung về cách thức và/hoặc lý do giải thích vấn đề này sẽ cải thiện giá trị lâu dài của câu trả lời. Vui lòng đọc [cách trả lời] này (http://stackoverflow.com/help/how-to-answer) để cung cấp câu trả lời có chất lượng. – thewaywewere

-1

Khi bạn nhấp vào nút

if(isset($_POST['save'])){ 
     $sql = "INSERT INTO `members`(`id`, `membership_id`, `email`, `first_name`) 
     VALUES ('".$_POST["id"]."','".$_POST["membership_id"]."','".$_POST["email"]."','".$_POST["firstname"]."')"; 
    **if ($conn->query($sql) === TRUE) { 
     echo "New record created successfully"; 
    } else { 
     echo "Error: " . $sql . "<br>" . $conn->error; 
    }** 
} 

này sẽ thực hiện Qu ery trong biến $ sql

if ($conn->query($sql) === TRUE) { 
     echo "New record created successfully"; 
    } else { 
     echo "Error: " . $sql . "<br>" . $conn->error; 
    } 
Các vấn đề liên quan