我一直在用PHP编写脚本,从表单中获取值,并将它们存储在我在代码中创建的MySQL表中,如下所示:
mysql_query("CREATE TABLE `userdetails` ( userid VARCHAR(10), field1 CHAR(33), field2 CHAR(33), field3 VARCHAR(34)");
这只执行一次,因为我没有访问网站的cPanel或phpMyAdmin,只是FTP服务器的详细信息。我从三个文本框中收集字符串,然后删除当前内容。
mysql_query("DELETE FROM `userdetails` WHERE userid=$userid");
接下来,像这样将字符串上传到MySQL服务器:
mysql_query("INSERT INTO `userdetails` (`userid`, `field1`, `field2`, `field3`) VALUES ($userid, $field1, $field2, $field3)")
有了这个脚本,我可以得到数字去数据库很好,但每当我在文本框中使用一个字母,它不上传,数据库字段返回NULL,我想。
经过一点调试,我可以看出字符串很好地存储了文本框数据,我可以回显它们并显示它们,带有字母。它就是不能上传。我试过做一个新的表,再试一次,那没有用。
您容易受到SQL注入攻击,并且正在构建错误的查询。
考虑:
$userid = 'foo';
生产
mysql_query("DELETE .... WHERE user=foo");
您的数据库中可能没有名为foo
的字段,因此查询失败。由于您显然缺乏任何类型的错误处理,因此您永远不会看到数据库将您的查询返回给您,并突出显示语法错误。
至少需要
mysql_query("DELETE ... WHERE user='$userid'"); // note the quotes
和一些错误处理
$result = mysql_query(...) or die(mysql_error());
你真的应该在别人通过你写的糟糕的脚本入侵你的服务器之前阅读http://bobby-tables.com。