数据未插入数据库到表

时间:2015-07-20 17:01:19

标签: 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和准备好的声明,但是我想先测试一下,它不起作用,我不知道为什么。谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

您没有执行查询:

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

它需要使用mysqli_query()与数据库连接一样,并确保使用session_start();启动会话,看到您正在使用会话。

$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 statementsPDO with prepared statements

如果仍然无法正常工作,那么MySQL可能会抱怨某些内容,因此您需要转义数据并检查错误。

旁注:

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

答案 1 :(得分:0)

如果您计划将来使用PDO,请参阅PDO中的查询示例。

$sql = $pdo->prepare("INSERT INTO table2 (id, title, price, session_id) VALUES(?, ?, ?, ?");
$sql->bindParam(1, $id);
$sql->bindParam(2, $title);
$sql->bindParam(3, $price);
$sql->bindParam(4, $session_id);
$sql->execute();

我们如何更安全。