$ip = $_SERVER['REMOTE_ADDR'];
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "images";
$id = $_SESSION['id'];
$ti = null;
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "SELECT * FROM `denied` WHERE ip-adress ='".$ip."'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "Sorry " . $row['Name'] . " you have been banned from this site";
}
else {
echo "<form action='' method='POST'> Enter name to continue: <br/> <input type='text' name='name' placeholder='Enter Name'> <input type='submit' name='continue' value='Continue'> </form> ";
}
由于某种原因,它会返回错误:
注意:尝试在第218行的C:\ xampp \ htdocs \ Projects \ test \ test.php中获取非对象的属性
有问题的一行就是这一行:
$result = $conn->query($sql);
但我很肯定它与该行有关:
$sql = "SELECT * FROM `denied` WHERE ip-adress ='".$ip."'";'
答案 0 :(得分:4)
这里的问题是WHERE子句中的列名:
WHERE ip-adress
^ hyphen (a.k.a. minus)
MySQL中的连字符具有特殊含义,它认为你想做一个减法。
即:ip
减去 address
就是它的解释。
您需要将该列包装在刻度线中
WHERE `ip-adress`
全线:
$sql = "SELECT * FROM denied WHERE `ip-adress` ='".$ip."'";
检查查询http://php.net/manual/en/mysqli.error.php的错误会让你有所了解。
或者,或者将列重命名为下划线而不是连字符。
由于您正在使用会话,请确保会话已启动。
session_start();
不在您发布的代码中。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
答案 1 :(得分:0)
错误消息实际上表示对象$conn
不存在,您可以将其视为&#39;它未成功创建&#39;如果你愿意的话。
在任何情况下,您都可以通过尝试print_r($conn)
也许你应该尝试这样连接:
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "SELECT * FROM `denied` WHERE ip-adress ='".$ip."'";
$result = $conn->query($sql);
...
我希望有所帮助!