2015-02-15 3 views
0

Я изучаю PHP и пытаюсь создать простую форму, которая отправляется в базу данных MySQL. Ошибок нет, но это не похоже на то, что у меня есть что-то в моей базе данных. Вы видите какие-то проблемы?PHP-форма, не отправляющая в базу данных SQL

HTML форма:

<form action="posts.php" method="post" /> 
<p>Input 1: <input type="text" name ="input1" /></p> 
<input type="submit" value="Submit" /> 
</form> 

PHP:

<?php 

define('DB_NAME', 'kindnesstraintest'); 
define('DB_USER', 'root'); 
define('DB_PASSWORD', ''); 
define('DB_HOST', 'localhost'); 

$link = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 

$value = $_POST['input1']; 

$sql = "INSERT INTO demo (input1) VALUES ('$value')"; 

?> 

PHPMyAdmin:

PHPMyAdmin Table Кто-нибудь видит никаких проблем?

+0

вам нужно сделать запрос - > 'mysqli_query ($ link, $ sql);', хотя вам также следует избегать вашего '$ value', используя либо' mysqli_real_escape_string() ', либо используя подготовленный оператор/параметр. – Sean

+0

Выведите переменную post. Также избегайте ваших данных, если в input1 есть цитата, которую вы собираетесь провалить, или что еще хуже. http://en.wikipedia.org/wiki/SQL_injection Oh yea @Sean прав, не обратил внимания на это. – chris85

+0

Он идет после вашего '$ sql = ...', как вам нужно в вашем запросе. это выглядит как docs - [mysqli_query (mysqli $ link, string $ query) '] (http://php.net/manual/en/mysqli.query.php) может оказаться полезным. – Sean

ответ

0

Вы должны сначала тест, чтобы убедиться, что ваше соединение вверх как ...

<?php 
$link = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
if($link->connect_error){ 
    trigger_error('Database connection failure: ' . $link->connect_error, E_USER_ERROR); 
} 

Если это проходит нормально, то вы строите вы запрос и запустить его с помощью функции «запроса», как так ...

// first protect against sql injection 
$value="'" . $link->real_escape_string($_POST['input1']) . "'"; 

// pass cleaned var to query setup 
$sql = "INSERT INTO demo (input1) VALUES ($value)"; 

// execute query 
$link->query($sql); 

вы можете также проверить ход запроса делает это вместо последней строки выше ...

if($link->query($sql) === false) { 
    trigger_error('Query Failed: ' . $sql . ' Error: ' . $link->error, E_USER_ERROR); 
} 
else { 
    // it worked... you can get the id of the item if you need it 
    $inserted_id = $link->insert_id; 
}