php插入数据库不工作

时间:2013-09-08 10:44:51

标签: php mysql sql

我想知道为什么下面的代码无法将我的数据添加到数据库中,没有任何错误消息。

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)");

5 个答案:

答案 0 :(得分:2)

首先,您不应该使用mysql_*函数,因为它们已过时,并且存在巨大的安全风险,因此请了解mysqli_PDO

第二,mysql_query()应该将dsn 作为第二个参数,而不是第一个参数。意味着您需要更改为mysql_query('your statement', $conn)但是您正在执行此操作opposite`

答案 1 :(得分:1)

mysql_query中的params顺序错误。 它应该是:

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

或在你的情况下:

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

你应该停止使用mysql_ extension,因为:

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.

答案 2 :(得分:0)

试试这个......

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

在过度热心的坚果攻击之前,让我们知道mysql是不安全的,已弃用并且可能导致你的小屋过早破坏。尽量远离它。

答案 3 :(得分: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 _ *。

试试这个

答案 4 :(得分:0)

(我之前的其他人按参数顺序捕获了错误) 更改后,您可能想要更改:

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

要:

$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。如果$ transactionId或$ useid未正确转义/清理,则您的代码容易出现SQL注入攻击。