首页 > 解决方案 > php : POST & INSERT 到 SQL 数据库,来自 URL 的 'id'

问题描述

我有一个网址:http://webaddress.php?id=100

我正在尝试将 'id' 值 100 插入我的 SQL 表的列中。

我尝试了以下方法:

$productid = $conn->real_escape_string($_POST['id']); 

$insertsql = "INSERT INTO TableName(table column)
        VALUES('$productid')";

任何人都可以就正确的方法提出建议吗?谢谢

标签: phpsqlphpmyadmin

解决方案


我的评论有点长,所以我将其发布为答案。

就像其他人说的那样。如果您将带有 url 的值发送到脚本,那么您需要使用它来获取它,$_GET而不是$_POST确保 id 确实是您可以使用的数字,(int)例如$productid = (int)$_GET['id']; . (int)会将您的变量转换为数字,如果它不是数字,它将返回因此0 ,如果 $productID 大于 0,您也可以在查询之前进行 checj 以防止在数据库中分配零

也可以使用 isset 函数$productID = isset($_GET['id']) ? (int)$_GET['id'] : 0,如果有人在没有参数 id 的情况下访问您的 url,他不会得到未定义的错误。

对于您的查询,请使用准备好的语句或 PDO 来防止 sql 注入

编辑:在 w3schools 上,我发现了一些关于准备好的语句的很好的解释和示例,PDO尝试将这些示例实施到您自己的项目中

第二次编辑:我正在阅读我发布的链接的准备好的陈述示例,在我看来他们犯了一个小错误。在$stmt->execute()他们假设数据被正确插入之后。但是为了确保数据确实被插入,你应该将该部分更改为:

// Check if there is really inserted some rows into the database or not
if ($stmt->affected_rows > 0) {
  echo "New records created successfully";
}

推荐阅读