2013-09-08 3 views
-1

Мне интересно, почему приведенный ниже код не может добавить мои данные в базу данных, нет никаких сообщений об ошибке.php insert database не работает

trans_id находится в INT (11) тип данных, subject и useid находится в VARCHAR (45).

$con = mysql_connect("localhost","user","pass"); 
if (!$con) 
{ 
die('Could not connect to the database! ' . mysql_error()); 
} 

//Accessing the database 
$db_selected = mysql_select_db("ebook", $con); 
if (!$db_selected) { 
    die ('Database error!' . mysql_error()); 
} 
else 
    mysql_query($con, "INSERT INTO free_chapters (trans_id, subject, useid) VALUES ($transactionId, 'Chemistry', $useid)"); 
+0

Что делать, если вы меняете свой запрос на mysql_query ("...") или умеете (mysql_error()); ' – Martijn

+1

, если' useid' является varchar, вам также нужны одинарные кавычки. – DevlshOne

ответ

0

Попробуйте это ...

mysql_query("INSERT INTO free_chapters (trans_id, subject, useid) VALUES ($transactionId, 'Chemistry', '" . $useid . "')", $con); 

И перед переусердствовать nutsos нападения, пусть это будет известно, что MySQL является небезопасным, устаревшим и может привести ваш дом, чтобы испортить преждевременно. Старайтесь держаться подальше от него.

2

Прежде всего, вы не должны использовать mysql_* функции, так как они устарели, и огромный риск для безопасности, поэтому, пожалуйста, узнать о mysqli_ или PDO

второй, mysql_query() должен принять dsnв качестве второго параметра , не первый. Значение вам нужно изменить, чтобы mysql_query('your statement', $conn), но вы делаете это opposite`

0
mysql_query($con, "INSERT INTO free_chapters (trans_id, subject, useid) VALUES ($transactionId, 'Chemistry', $useid)"); 

Должно быть:

mysql_query($con, "INSERT INTO free_chapters (trans_id, subject, useid) VALUES ('$transactionId', 'Chemistry', '$useid')" 

И использовать mysqli_ * вместо mysql_ *.

попробовать это

+0

параметром должен быть сам запрос, чем идентификатор ссылки. – Zagor23

1

Вы имеете неправильный порядок Params в mysql_query. Оно должно быть:

mysql_query (string $query [, resource $link_identifier = NULL ]); 

или в вашем случае:

mysql_query("INSERT INTO free_chapters (trans_id, subject, useid) 
VALUES ($transactionId, 'Chemistry', '$useid')", $con); 

И вы должны прекратить использовать расширение mysql_, потому что:

This extension is deprecated as of PHP 5.5.0, 
and will be removed in the future. Instead, the MySQLi or PDO_MySQL 
extension should be used. See also MySQL: choosing an API guide and 
related FAQ for more information. 
0

(другие до меня поймали ошибку в заказе параметров) После их изменения вы можете изменить:

 
mysql_query("INSERT INTO free_chapters (trans_id, subject, useid) VALUES ($transactionId, 'Chemistry', $useid)", $con); 

To:

 
$res = mysql_query("INSERT INTO free_chapters (trans_id, subject, useid) VALUES ($transactionId, 'Chemistry', $useid)", $con); 
if (!$res) { 
    die('Error during insert: ' . mysql_error()); 
} 

Это должно дать вам сообщение об ошибке из базы данных, и вы можете решить любые другие проблемы.

И конечно:

После решения проблемы с этим запросом вы можете захотеть прекратить использовать устаревший API, и начать использовать MySQLi или Pdo_Mysql. Ваш код подвержен атакам SQL-инъекций, если $ transactionId или $ useid неправильно экранированы/дезактивированы.

Смежные вопросы