只有数字插入sql中

时间:2011-06-09 23:00:30

标签: php sql forms

所以我有这个表格

<form>Tag name:
    <input type='text' name='tagname' />
    <input type='submit' value='Add' />
    <input type='hidden' name='id' value='$id' />
</form>
<hr />

它运行此脚本

if ($tagname) 
{   
    mysql_query("INSERT INTO tags (id, tag) VALUES ($id, $tagname)");
    ?>
    <script type="text/javascript">
    alert("Tag added.");
    history.back();
    </script>
    <?php
}   

如果我在表单中插入数字,它很好地添加到sql数据库,但如果它由字母字符组成,我得到警报但没有插入数据库。 我检查了phpmyadmin,如果结构错误(text / varchar / int ...)尝试了大部分但是它们是相同的。

5 个答案:

答案 0 :(得分:3)

您需要使用单引号将SQL查询中的字符串括起来:

 mysql_query("INSERT INTO tags (id, tag) VALUES ('$id', '$tagname')");

我猜想你也忘记事先申请mysql_real_escape_string

答案 1 :(得分:3)

mysql_query("INSERT INTO tags (id, tag) VALUES ($id, '$tagname')");

很常见的错误。考虑转义或更好 - 参数化查询。连接SQL查询是一种非常糟糕的方法(因此,将一小段代码放在一起,HTML,PHP,SQL和JavaScript)

答案 2 :(得分:3)

你的mysql查询中需要大约$ id(除非它是一个数字)和$ tagname的引号。

作为旁注,这很容易受到SQL注入的攻击。<​​/ p>

答案 3 :(得分:2)

我发现你的代码有几个问题,首先设置id输入字段的值:

<input type="hidden" name="id" value="<?php echo $id; ?>" />

然后,在SQL中你应该使用引号:

mysql_query("INSERT INTO tags (id, tag) VALUES ($id, '$tagname')");

答案 4 :(得分:1)

据我所知,根据你的代码,并根据你如何逃避,如果你没有ajax来获取你正在运行的id:

INSERT INTO tags (id, tag) VALUES (0, $tag)
INSERT INTO tags (id, tag) VALUES ('', $tag)

你应该真的跑步:

INSERT INTO tags (tag) VALUES ('$tag')