php - 数据未插入数据库到表中

标签 php mysql

我试图在用户单击文件 one.php 中的链接后将数据插入数据库。所以文件two.php包含以下代码:

$retrieve = "SELECT * FROM catalog WHERE id = '$_GET[id]'";
$results = mysqli_query($cnx, $retrieve);
$row = mysqli_fetch_assoc($results);
$count = mysqli_num_rows($results);

因此上面的查询将使用 $_GET[id] 作为引用从数据库中获取信息。 执行此操作后,我想使用以下代码将检索到的信息插入到不同的表中:

$id = $row['id'];
$title = $row['title'];
$price = $row['price'];
$session = session_id();

if($count > 0) {
    $insert = "INSERT INTO table2 (id, title, price, session_id)
            VALUES('$id', '$title', '$price', '$session');";
    }

第一个查询 $retrieve 有效,但第二个 $insert 无效。您知道为什么会发生这种情况吗? PS:我知道我需要清理和使用 PDO 和准备好的语句,但我想先测试一下,但它不起作用,我不知道为什么。感谢您的帮助

最佳答案

您没有执行查询:

$insert = "INSERT INTO table2 (id, title, price, session_id)
        VALUES('$id', '$title', '$price', '$session');";
}

它需要使用mysqli_query()与数据库连接,就像您对SELECT所做的那样,并确保您使用session_start();启动 session 看到你'正在使用 session 。

$insert = "INSERT INTO table2 (id, title, price, session_id)
        VALUES('$id', '$title', '$price', '$session');";
}


$results_insert = mysqli_query($cnx, $insert);

基本上。

加上...

您当前的代码已开放给 SQL injection 。使用mysqli with prepared statements ,或PDO with prepared statements .

如果仍然不起作用,那么 MySQL 可能会提示某些事情,因此您需要转义数据并检查错误。

旁注:

使用mysqli_affected_rows()检查INSERT是否真正成功。

关于php - 数据未插入数据库到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31522196/

相关文章:

php - RUBY 和 RAILS 相对于 PHP 和 CODEIGNITER 的主要优势是什么

php - 检查在 mysql startdate enddate 列之间找到的日期 renge

php - 创建自增表名?

mysql - Rails 4 应用程序 'Incorrect string value' 中 Mysql 错误的最佳解决方案?

php - 论坛响应错误: Duplicate entry for PRIMARY key

javascript - Knexjs 将 mysql 时间戳、日期时间列作为 Javascript 日期对象返回

PHP/MySql - 查询具有嵌套对象的对象的最佳方式

php - 在 Drupal 中使用 MYSQL 查询可排序 HTML 表

PHP MySQL 插入查询,如果已经存在则不会插入

php - Linux进程死掉后重新启动