【发布时间】:2014-02-13 19:37:45
【问题描述】:
这行代码有一些问题:
$usersql= mysql_query("INSERT INTO tp_request (user_id, week_no, floor, code) VALUES ($insertuser, $week, $floor, $code)");
变量值如下:
$insertuser = 1;
$week = 4;
$floor = "First";
$code = "ABC123";
$insertuser 和 $week 一起使用时可以毫无问题地进入数据库没有其他两个变量。但是,当使用 $floor 和 $code 时,不会将任何内容输入到数据库中。它们都分别正确地回显为“First”和“ABC123”。
数据库中的字段已作为 Text 和 VarChar 进行了尝试,但它不适用于其中任何一个。
关于如何让 $floor 和 $code 在这里工作有什么想法吗?
【问题讨论】:
-
stings 需要引用
-
使用类似 mysqli 和prepared statements 之类的东西会自动为你处理这个问题并清理你的输入。
-
所以应该是:
INSERT INTO tp_request (user_id, week_no, 'floor', 'code')? -
如果这段代码不是难以置信的不安全和可破解的,你所有的问题都会得到解决。 1. 不要使用
mysql_。这是一个旧的扩展,它已被弃用。请改用mysqli_或PDO。 2. 使用准备好的语句和绑定变量,或者至少使用mysqli_real_escape_string来避免所有这些问题。 -
Stackoverflow 需要自动拒绝任何带有
mysql_*()且链接到PDO或mysqli的帖子