我正在使用PHP中的单个get方法编写一个非常简单的REST服务。我是PHP的新手,但在尝试理解所有功能的同时,我发现它是一个很好的框架。
我的API运行良好&以非常快的速度将数据作为JSON数组返回,但在我推送它之前,我担心会发生SQL注入和从在线阅读中发现一种相当快速的防止这些方法可能是为DB添加一个SQL准备来解析查询&变量分开。 获取请求中的我的变量是SHA512散列字符串& API也在HTTPS环境中运行。
我正在努力解决的问题如下:
$stmt = mysqli_prepare ($link, "select blah,blah from people WHERE hashed = ? and blah <>''" );
//binding SQL parameters
mysqli_stmt_bind_param($stmt, 's', $e);
// excecute SQL statement
mysqli_stmt_execute($stmt);
//get results
$result = mysqli_stmt_get_result($stmt);
}
//Set 405 status if wrong method is used.
else {
$result = http_response_code(405);
}
//debug variable check & SQL results row count
echo $e;
echo mysqli_num_rows($result);
我知道$ link的变量正在按预期工作,因为他们之前正在使用从包含的单独文件中提取连接字符串。
目前,$ e的调试回显按预期返回变量,但rowcount为0。
如果我在SQL Server中运行查询,查询将按预期返回结果。我使用MAMP(不是专业版),所以我也不确定SQL分析器。我认为我的问题在于某处的参数绑定。
提前致谢