使用 PHP 检查 MySQL INSERT QUERY 中变量存在的简明方法

发布于 2024-08-02 13:26:22 字数 390 浏览 8 评论 0原文

我正在编写一个 PHP 脚本来将商品添加到购物篮中。我的购物篮表包含用户 ID、产品 ID、会话 ID、注释和其他一些字段。某些字段可以为空。例如:

如果某人未登录,那么我会将他们的会话 ID 存储在表中,如果他们登录,则添加他们的用户 ID,以便我有一种永久的方式将表中的项目与用户进行匹配。如果是的话,我会添加用户 ID。当涉及到 INSERT 查询时,我可以这样做:

$add_sql = "INSERT into sessionBasket (userid) VALUES ( '".isset($_SESSION["userid"]) ? $_SESSION["userid"] : "") ."'";

这会在变量检查和分支上节省我很多时间,因为人们可以登录也可以不登录,物品可以有注释也可以没有,之类的。

I am writing a PHP script to add items to a shopping basket. My shopping basket table has fields for the userid, product id, session id, notes and a few others. Some of the fields can be blank. For example:

if someone isn't signed in, then I will store their session id in the table and, if they sign in, add their userid so I have a permanant way to match the items in the table to the user. If they are, I'll add the userid. When it comes to the INSERT query, can I do something like this:

$add_sql = "INSERT into sessionBasket (userid) VALUES (
'". isset($_SESSION["userid"]) ? $_SESSION["userid"] : "") ."'";

It would save me so much time on variable checking and branching because people could be signed in or not, items could have notes or not, that sort of thing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笔落惊风雨 2024-08-09 13:26:22

哎呀! SQL 注入! 你可能会丢失整个数据库

你应该查看 SQL 插入的准备语句。

您需要使用 mysqli 接口,但它是这样的:

$statement = $db_connection->prepare("insert into ... VALUES(?)");
$statement->bind_param("id", $sid);
$statement->execute();

这将防止 sql 注入攻击。

绝对最低限度,您至少应该转义字符串。

$sid = isset($_SESSION[userid]) ? mysql_real_escape_string($_SESSION[userid])) : '';
$add_sql = "insert into ... values($sid)";

Yikes! SQL Injection! you could lose your whole database

You should be looking at prepared statements for your sql insertion.

You need to use the mysqli interface but it goes like this:

$statement = $db_connection->prepare("insert into ... VALUES(?)");
$statement->bind_param("id", $sid);
$statement->execute();

This will prevent sql injection attacks.

At an absolute minimum you should at least escape the string.

$sid = isset($_SESSION[userid]) ? mysql_real_escape_string($_SESSION[userid])) : '';
$add_sql = "insert into ... values($sid)";
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文