<?php
$servername = "localhost";
$username = "user";
$password = "password";
$database = "mydatabase";
$mypassword = "mypassword";
$receivedPassword = $_POST["pwd"];
if ($receivedPassword != $mypassword) {
print "cedential failure";
} else {
$unfiltered = $_POST["query"];
// print("unfiltered $unfiltered");
$myquery = htmlspecialchars($unfiltered);
// Create connection
$conn = new mysqli($servername, $username, $password, $database);
// print("filtered: $myquery");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else {
print("conn ssuccessfull");
}
print('performing query: ' . $myquery);
//$quer = (string)$myquery;
$res = $conn->query($myquery); // or die(mysql_error());
$enc = mb_detect_encoding($myquery);
print("<br> encoding is: $enc <br>");
$rows = array();
while ($r = mysqli_fetch_assoc($res)) {
$rows[] = $r;
print($r);
}
print("ehere");
print json_encode($rows);
$conn->close();
}
?>
这是我打印回来的一个例子。
conn successl
执行查询:SELECT * FROM music_log2 WHERE(central_time&gt;'2016-02-03 2:00:00'AND central_time&lt;'2016-02-03 4:00:00')
编码是:ASCII
ehere []
查看服务器日志,我看到:
2/27/2016 4:41:26 AM - www:PHP警告:mysqli_fetch_assoc()要求参数1为mysqli_result,第43行的/path/to/my/file.php中给出布尔值
请注意,在我的示例输出中,我没有得到结果。事实上,服务器日志表明在以下情况之后$ res为false:
res = $conn->query($myquery); // or die(mysql_error());
我已经尝试过die选项,因为你可以看到注释掉,但我没有输出错误,只是没有打印。
当我通过将查询行更改为:
来将确切查询硬编码时$res = $conn->query("SELECT * FROM music_log2 WHERE (central_time > '2016-02-03 2:00:00' AND central_time < '2016-02-03 4:00:00')");
它很有效。 以下是更改上述行的一些输出:
conn successfull
执行查询:SELECT * FROM music_log2 WHERE(central_time&gt;'2016-02-03 2:00:00'AND central_time&lt;'2016-02-03 4:00:00')
编码是:ASCII
ArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArrayArray [{ “field_number”: “6”, “值”:“一切 除了轮换“,”central_time“:”2016-02-03 三点59分15" 秒, “USER_AGENT”: “API”, “ID”: “1084793”},{ “field_number”: “2”, “值”:“标题 战斗 “ ”central_time“:” 2016年2月3日 三点59分15" 秒, “USER_AGENT”: “API”, “ID”: “1084794”},{ “field_number”: “3”, “值”: “超级”, “central_time”:“2016-02- 03 三点59分15" 秒, “USER_AGENT”: “API”, “ID”: “1084795”},{ “field_number”: “4”, “值”: “氯”, “central_time”:“2016-02- 03 三点59分15" 秒, “USER_AGENT”: “API”, “ID”: “1084796”},
...
帮助。我很难过。已经工作了2天了。
我也尝试用双引号包装查询:
$res = $conn->query('"' . $myquery . '"');
相同的空结果。
答案 0 :(得分:1)
htmlspecialchars转换&lt;到<
和&gt;到>
,它不会在你的MySQL查询中传播。
答案 1 :(得分:0)
我不确定你的问题是什么,但我仍然能以这种方式提供帮助。
在PHP脚本中使用&#34; .mysqli_connect_error()&#34;方法,看看什么是繁琐地给你错误。像这样使用它:
if(!$connection){
echo "Connectionn Error...".mysqli_connect_error();
}else{
echo"Database connection Success...";
}
在浏览器中调用PP脚本,您应回显错误!