我目前有这段代码
$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);
但仍然无效。
答案 0 :(得分:1)
将字符串插入数据库时,需要确保对它们使用mysql_real_escape_string()。这可以防止任何无意识的问题,以及SQL注入,这可能会给您的网站带来很多问题。
您还可以查看使用prepared statements,这有效地消除了这个问题。
答案 1 :(得分:0)
不,' - '在单引号内不是SQL运算符(就像你在那里一样)。
mcat
列可能包含错误的数据类型。它是VARCHAR吗?要存储你所拥有的东西,它应该是。
答案 2 :(得分:0)
您没有在表格中提及列的数据类型。 我认为mcat的数据类型是数字类型。
可能通过将mcat数据类型更改为字符串来解决您的问题。