我一直在使用wampserver进行php项目,但是DML查询对我不起作用。这是我一直在使用的一些测试代码
$query='insert into register(first_name) values("swagmaster")';
echo($query);
$query = mysqli_real_escape_string($connection,$query);
echo"<br>$query";
if(mysqli_real_query($connection,"'".$query."'")===TRUE)
{
echo"woohoo!";
}
else
{
echo"query failed";
}
echo(mysqli_error($connection));
运行时我得到以下输出:
插入寄存器(first_name)值(“swagmaster”)
插入寄存器(first_name)值(\“swagmaster \”)查询失败您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行“插入寄存器(first_name)值(\”swagmaster \“)'附近使用正确的语法
但是,select语句运行正常。我怀疑问题是在mysql设置中。有什么建议吗?
更新:
使用您的提示组合,查询现在正在运行。谢谢大家!
答案 0 :(得分:0)
请尝试此查询
$query = "INSERT INTO `register` SET `fieldname`='{$vaue}',`field2`='{$value2}'";
答案 1 :(得分:0)
从
更改查询$query='insert into register(first_name) values("swagmaster")';
到
$query="insert into register(first_name) values('swagmaster')";
同样Fred-ii说你不需要在这里添加'
if(mysqli_real_query($connection,"'".$query."'")===TRUE)
更改为
if(mysqli_real_query($connection,$query)===TRUE)
答案 2 :(得分:0)
您使用了
$query = mysqli_real_escape_string($connection,$query);
但是这在查询中逃脱了所有引用。这是不正确的。对于受保护的SQL注入,您应该仅使用escape函数来代替查询。
对于您的示例,您不需要此字符串。
但是如果你使用变量那么就应该使用它
$value = "swagmaster";
$value = mysqli_real_escape_string($value);
$query='insert into register(first_name) values("' . $value . '")';
在$ query中已经是正确的查询。并且添加引号不正确。只需使用
if(mysqli_real_query($connection, $query)===TRUE)