php - 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')";
任何人都可以就正确的方法提出建议吗?谢谢
解决方案
我的评论有点长,所以我将其发布为答案。
就像其他人说的那样。如果您将带有 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";
}
推荐阅读
- r - 如何根据闪亮的用户输入从相同的分布中生成两个图?
- python - 为什么每次我将列表添加为关键字 arg 时,python structlog 都会记录一个 redactError?
- node.js - 简单节点http服务器单元测试
- sql - SQL 返回值 0 以防万一
- javascript - 等待 API 在 Angular 中完成
- javascript - 使用 axios 使用服务不工作
- outlook - 面向 Outlook 的 NetSuite
- javascript - 使用递归函数进行对象转换
- nginx - 带有静态 index.html 和反向代理的 Nginx
- python - 使用列表的算术运算