这很简单,但我似乎无法找到我正在寻找的答案。
这非常有效:
mysql_query("INSERT INTO Courses (CourseName) values ('MyValue')");
但这不起作用:
mysql_query("INSERT INTO Courses (CourseName) values ('" + $_POST['course'] + "')");
我测试过,我知道$_POST['course']
包含MyValue
我甚至允许在php中使用这种语法吗?
Sql Injection不是一个问题。
答案 0 :(得分:0)
使用.
代替+
mysql_query("INSERT INTO Courses (CourseName) values ('" . mysql_real_escape_string($_POST['course']) . "')");
答案 1 :(得分:0)
PHP使用。连接字符串
mysql_query("INSERT INTO Courses (CourseName) values ('".mysql_real_escape_string($_POST['course'])."')");
还可以使用mysql_real_escape_string来防止任何错误,例如o'neil中有单引号。
答案 2 :(得分:0)
1)使用mysqli,而不是mysql,因为它已被弃用。
2)如果你仍然使用mysql,总是使用mysql_real_escape字符串来逃避来自你网站的变量......
3)调试你的代码。您的示例中最快的只是使用:
mysql_query("... your sql string ") or die(mysql_error())
比你看到的错误。 (但是当你的脚本上线时,注释掉所有“或者死掉(mysql_error())+代码,这样其他人就看不到错误,并破解你的网站(这么容易))
4)。是php中字符串的串联,而不是+
答案 3 :(得分:0)
mysql_query("INSERT INTO Courses (CourseName) values ('" + $_POST['course'] + "')");
PHP不支持您正在使用的字符串连接方法。它以其他语言支持。构建字符串有多种选择。
选项1:将+
替换为.
mysql_query("INSERT INTO Courses (CourseName) values ('".$_POST['course']."')");
选项2:没有休息
mysql_query("INSERT INTO Courses (CourseName) values ('{$_POST['course']}')");
您应该阅读语言之间的基础知识,特别是在这种情况下,搜索“PHP String Concatenation”将为您提供所需的信息。
另外:不要使用MySQL_ *,因为它已从PHP 5.5开始被弃用。使用MySQLi_ *或PDO