我正在玩.php和SQL,我试图测试一些东西.我知道将变量存储在表中是一件非常容易的事情,但由于某种原因,它现在对我不起作用.
这是我的表:
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| v1 | varchar(255) | YES | | NULL | |
| v2 | varchar(255) | YES | | NULL | |
| v3 | varchar(255) | YES | | NULL | |
| v4 | varchar(255) | YES | | NULL | |
| v5 | varchar(255) | YES | | NULL | |
| v6 | varchar(255) | YES | | NULL | |
| v7 | varchar(255) | YES | | NULL | |
| v8 | varchar(255) | YES | | NULL | |
| v9 | varchar(255) | YES | | NULL | |
| v10 | varchar(255) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
Run Code Online (Sandbox Code Playgroud)
我像这样访问表:
$result = mysql_query("INSERT INTO form2 (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) VALUES ($field0, $field1, $field2, $field3, $field4, $field5, $field6, $field7, $field8, $field9)");
Run Code Online (Sandbox Code Playgroud)
我通过这样做从网址获取变量:
$field0 = $_GET['field0'];
$field1 = $_GET['field1'];
$field2 = $_GET['field2'];
$field3 = $_GET['field3'];
$field4 = $_GET['field4'];
$field5 = $_GET['field5'];
$field6 = $_GET['field6'];
$field7 = $_GET['field7'];
$field8 = $_GET['field8'];
$field9 = $_GET['field9'];
Run Code Online (Sandbox Code Playgroud)
最后,我的网址是:
http://mywebsite.ca/anapplication?field0=YES&field1=GOOD&field2=GOOD&field3=GOOD&field4=YES&field5=GOOD&field6=GOOD&field7=GOOD&field8=A&field9=&
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息,指出有一个未知列'YES'(第一个参数).我用数字而不是字符串传递了相同的URL,令我惊讶的是一切都工作了.
我对.php或SQL没有多少经验,所以我正在寻找一套新的眼睛来快速浏览一下我在这里发布的内容.
我相信你需要用单引号包装你的值,这样mysql将它们视为字符串而不是整数.这就是为什么只传递数字通过作品而字符串不传递的原因.
所以,
$result = mysql_query("INSERT INTO form2 (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) VALUES ('$field0', '$field1', '$field2', '$field3', '$field4', '$field5', '$field6', '$field7', '$field8', '$field9')");
Run Code Online (Sandbox Code Playgroud)
应该清理它.
此外,如果这是来自Web表单或其他外部源,请确保使用类似mysql_real_escape_string()的方法对其进行清理.
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |