2017-08-16 84 views
0

我是自學php語言。我創建了用於在數據庫中插入數據和搜索數據的PHP代碼。我想用MySQL和PHP插入&搜索數據到數據庫。我使用WAMP服務器。最後,搜索功能正常工作,但插入功能不起作用。搜索功能是工作,但插入功能不工作在PHP

enter image description here

我在

Fatal error: Uncaught exception 'mysqli_sql_exception' with message '

PHP代碼的錯誤是:

if(isset($_POST['insert'])){ 
    $data = getPosts(); 
    $sql = "INSERT INTO users (id, fname, lname, age) VALUES ('$data[0]','$data[1],'$data[2]','$data[3]')"; 

    $result= mysqli_query($connect,$sql); 
if($result){ 
    echo 'Insert is success.....'; 
} 
else{ 
    echo 'Insert is unsuccess'; 
} 
} 

function getPosts(){ 

    $posts = array(); 
    $posts[0] = $_POST['id']; 
    $posts[1] = $_POST['fname']; 
    $posts[2] = $_POST['lname']; 
    $posts[3] = $_POST['age']; 
    return $posts; 
} 

//Search 
if(isset($_POST['search'])){ 
    $data = getPosts(); 
    $search_Query = "SELECT * FROM users WHERE id = $data[0]"; 
    $search_Result = mysqli_query($connect, $search_Query); 
    if($search_Result) 
    { 
     if(mysqli_num_rows($search_Result)) 
     { 
      while($row = mysqli_fetch_array($search_Result)) 
      { 
       $id = $row['id']; 
       $fname = $row['fname']; 
       $lname = $row['lname']; 
       $age = $row['age']; 
      } 
     } 
     else{ 
      echo 'No Data for this id'; 
     } 
    }else{ 
     echo 'Result Error'; 
    } 
} 

的html代碼:

<form action="" method="post"> 
    Enter Your Id: <input type="number" name="id" placeholder="Id" value="<?php echo $id;?>"><br><br> 
    Enter Your First Name: <input type="text" name="fname" placeholder="First Name" value="<?php echo $fname;?>"><br><br> 
    Enter Your Last Name:<input type="text" name="lname" placeholder="Last Name" value="<?php echo $lname;?>"><br><br> 
    Enter Your Age:<input type="number" name="age" placeholder="Age" value="<?php echo $age;?>"><br><br> 
    <div> 
    <input type = "submit" name="insert" value="Add"> 
    <input type = "submit" name="search" value="Search"> 
    </div> 
    </form> 

任何人都可以幫助我嗎?感謝任何觀衆。

+1

是不是ID自動增量列? – Whencesoever

+1

請分享您的'用戶'表的表格結構。 –

+2

嘗試使用預準備語句來避免sql注入。 – JYoThI

回答

4

您在插入查詢中忘記了單引號(')後$data[1]

這種變化您插入查詢:

$sql = "INSERT INTO users (id, fname, lname, age) VALUES ('".$data[0]."','".$data[1]."','".$data[2]."','".$data[3]."')"; 
1
$sql = "INSERT INTO users (id, fname, lname, age) VALUES ('$data[0]','$data[1]','$data[2]','$data[3]')"; 
2
$sql = "INSERT INTO users (id, fname, lname, age) VALUES ('$data[0]','$data[1],'$data[2]','$data[3]')"; 

$sql = "INSERT INTO users (id, fname, lname, age) VALUES ('{$data[0]}','{$data[1]}','{$data[2]}','{$data[3]}')"; 

$sql = "INSERT INTO users (id, fname, lname, age) VALUES ('".$data[0]."','".$data[1]."','".$data[2]."','".$data[3]."')"; 
+0

謝謝bostaf –

0
替換上面的行

你省略了一個「在查詢後'$data[1],被假設是'$data[1]'

$sql = "INSERT INTO users (id, fname, lname, age) VALUES ('$data[0]','$data[1],'$data[2]','$data[3]')";