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

时间:2009-08-26 23:04:18

标签: php mysql insert isset

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

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

$ add_sql =“INSERT into sessionBasket(userid)VALUES( '“。isset($ _ SESSION [”userid“])?$ _SESSION [”userid“]:”“)。”'“;

它可以节省我很多时间进行变量检查和分支,因为人们可以登录或不签名,项目可以有或没有,这类事情。

1 个答案:

答案 0 :(得分:1)

糟糕! SQL Injection!您可能会丢失整个数据库

您应该查看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)";