mysql插入转义

时间:2010-07-09 20:49:12

标签: php mysql escaping

我目前有这段代码

$main_cat = "Antiques-collectables";
$mcat = "0187-1443";
$sub_cat = "toys";


   mysql_query("
INSERT INTO categories
(id, main_cat, sub_cat, mcat)
VALUES
('', '$main_cat', '$sub_cat', '$mcat')
");

由于某些原因,$ mcat值未正确存储。当我在数据库中检查它时,它显示为“1”,“347”值等...只有1或3位数值。我认为“ - ”被sql引擎解释为运算符。有没有办法逃脱它?我也试过

$mcat = str_replace("-", "\-", $mcat);

但仍然无效。

3 个答案:

答案 0 :(得分:1)

将字符串插入数据库时​​,需要确保对它们使用mysql_real_escape_string()。这可以防止任何无意识的问题,以及SQL注入,这可能会给您的网站带来很多问题。

您还可以查看使用prepared statements,这有效地消除了这个问题。

答案 1 :(得分:0)

不,' - '在单引号内不是SQL运算符(就像你在那里一样)。

mcat列可能包含错误的数据类型。它是VARCHAR吗?要存储你所拥有的东西,它应该是。

答案 2 :(得分:0)

您没有在表格中提及列的数据类型。 我认为mcat的数据类型是数字类型。

可能通过将mcat数据类型更改为字符串来解决您的问题。