2016-03-24 3 views
0

У меня есть простой запрос, который я использую для вставки записи на основе отправки формы, но она не записывает запись в базу данных. Это также не вызывает ошибки. Я использовал var_dump и проверил, что переменные размещаются правильно, поэтому я думаю, что проблема заключается в синтаксисе запроса, но я тоже это проверил.PHP to SQL Insert not Working

Любая помощь или рекомендация приветствуются. Вот код:

if (isset($submit)){ 

$user_id = $_SESSION['user_id']; 
$anthem1 = $_POST['anthem1']; 
$cointoss2 = $_POST['cointoss2']; 

$query = "INSERT INTO mypicks ("; 
$query .= " user_id, anthem1, cointoss2"; 
$query .= ") VALUES ("; 
$query .= " '{$user_id}', '{$anthem1}', '{$cointoss2}'"; 
$query .= ")"; 
$result = mysqli_query($connection, $query); 

} 
+0

Синтаксис запросов является правильным. Вы проверили значение $ submit? ('var_dump ($ submit);') – fusion3k

+0

Конечно, ошибок нет, так как вы не выполняете обработку ошибок sql, проверяя возвращаемое значение из mysqli_query(). Я надеюсь, что вы подключитесь к серверу mysql в своем коде. – Shadow

+0

Добавьте 'или die (mysql_error ($ connection))' в конец 'mysqli_query ($ connection, $ query)', чтобы получить сообщение об ошибке, т.е. '$ result = mysqli_query ($ connection, $ query) или die (mysql_error ($ connection));' – Sean

ответ

1

Вы хотите добавить некоторые проверки в свой код.

Сначала вы будете хотеть, чтобы убедиться, что подключение к базе данных происходит:

$connection = new mysqli('localhost', 'username', 'password', 'database'); 

if($connection->connect_errno > 0){ 
    die('Unable to connect to database [' . $connection->connect_error . ']'); 
} 

Следующая вещь, вы хотите, чтобы убедиться, что ваша переменная $submit установлена, так что ваш блок кода на самом деле стрельба ,

Если да, то убедитесь, что ваш запрос работает:

$user_id = $_SESSION['user_id']; 
$anthem1 = $_POST['anthem1']; 
$cointoss2 = $_POST['cointoss2']; 

$stmt = $connection->prepare("INSERT INTO mypicks (user_id, anthem1, cointoss2) VALUES (?, ?, ?)"); 
$stmt->bind_param("sss", $user_id, $anthem1, $cointoss2); 
$stmt->execute(); 

if(!$result = $stmt->get_result()){ 
    die('There was an error running the query [' . $connection->error . ']'); 
} 

Также не забывайте убирать за подопечными

$stmt->close(); 
$connection->close(); 
+1

Вниз проголосовали за то, что вы могли использовать подготовленные заявления в своем ответе. –

+0

@AlBundy хороший момент, я обновил свой ответ, чтобы отразить это. – bmcculley

+0

... И наоборот ... –