我试图在用户单击文件 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/