PHP 插入数据库不起作用


php insert database not working

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

trans_id 在 INT(11) 数据类型中,主题和 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)");

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

其次,mysql_query()应将dsn作为第二个参数,而不是第一个参数。这意味着你需要改成mysql_query('your statement', $conn)但你做的恰恰相反。

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.
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_*。

试试这个

试试这个...

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

在过度热心的 nutsos 攻击之前,让我们知道 mysql 是不安全的、已弃用的,并且可能导致您的小屋过早变质。尽量远离它。

(在我之前的其他人在参数顺序上发现了错误)更改它们后,您可能需要更改:

mysql_query("插入free_chapters(trans_id、主题、使用ID)值($transactionId、'化学'、$useid)",$con);

自:

$res = mysql_query("插入free_chapters(trans_id,主题,使用ID)值($transactionId,'化学',$useid)",$con);如果 (!$res) {    die('插入时出错: ' . mysql_error());}

这应该会给您来自数据库的错误消息,您可以解决任何其他问题。

当然:

解决此查询的问题后,您可能希望停止使用已弃用的 API 并开始使用 MySQLi 或 PDO_MySQL。如果$transactionId或$useid未正确转义/清理,则代码容易受到 SQL 注入攻击。