2017-06-03 76 views
-2

我想玩弄數據庫和動態地使用php插入數據。 目前我有一個'後'方法的形式,一切似乎符合邏輯,但它並沒有插入數據到表中。POST方法不插入數據到數據庫表

代碼附在下面,如果有人能指出我正確的方向,將不勝感激。

的index.php:

<form action="index.php" method="post"> 

<label for="name">Name</label> 
<input type="text" name="name" required> 

<label for="breed">Breed</label> 
<input type="text" name="breed"> 

<label for="age">Age</label> 
<input type="text" name="age"> 

<input type="submit" name="submit" value="Submit"> 

</form> 

<?php 

require "connect.php"; 

if('submit') { 
    $name = $_POST['name']; 
    $breed = $_POST['breed']; 
    $age = $_POST['age']; 

    $newdog = mysqli_query('INSERT INTO `dogs`(`name`, `breed`, `age`) VALUES ([$name],[$breed],[$age)'); 

    if ($newdog) { 
     echo "$name has been added to the database"; 
    } else { 
     echo "$name has not been added to database."; 
    }; 
}; 

?> 

connect.php:

<?php 

$connect = mysqli_connect('localhost', 'max', 'password', 'db_test'); 

?> 
+0

請使用*準備的語句*,您的代碼是開放的SQL注入。 – ccKep

回答

0

變化if('submit') {

TO

if(isset($_POST['submit'])){//check if it is set 

} 

而且改變這一行:

$newdog = mysqli_query('INSERT INTO(,品種,年齡) VALUES ([$name],[$breed],[$age)');

TO

$newdog = mysqli_query($connect, 'INSERT INTO(,品種,年齡) VALUES ($name,$breed,$age)');//remove square bracktes and add connection variable

您的代碼是很好容易受到SQL注入

使用準備好的語句,

$stmt = $connect->prepare("INSERT INTO dogs (`name`, `breed`, `age`) VALUES (?, ?, ?)"); 
$stmt->bind_param("sss", $name, $breed, $age); 
if($stmt->execute() == true){ 
    echo 'Saved'; 
} else { 
    echo 'Error '. $stmt->error; 
} 
+0

到目前爲止還沒有工作,即使是你提出的改變。我瞭解它的脆弱性,但我希望在擔心安全性之前先讓它工作。感謝您的幫助到目前爲止 –

+0

檢查我的更新代碼 – Akintunde007

+0

謝謝@akintude,它不工作,但我感謝您的努力,使我的代碼安全:) –

0
<?php 

require "connect.php"; 

if(isset($_POST['submit'])) { 
    $name = $_POST['name']; 
    $breed = $_POST['breed']; 
    $age = $_POST['age']; 

    $newdog = mysqli_query($connect, 'INSERT INTO dogs(name, breed, age) VALUES ("'.$name.'","'.$breed.'","'.$age.'")'); 

    if ($newdog) { 
     echo "$name has been added to the database"; 
    } else { 
     echo "$name has not been added to database."; 
    }; 
}; 

?> 
0

自己的答案:想通了,我不得不配置PHPStorm使用甲基苯丙胺的Apache服務器,而不是內部的服務器,因爲那一個顯然不喜歡$ _POST []請求