$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."'";'
这里的问题是 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();
不在你发布的代码中。
将错误报告添加到文件顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:显示错误只能在暂存中完成,而不应在生产中完成。
错误消息实际上说对象$conn
不存在,如果您愿意,可以将其读作"未成功创建"。
在任何情况下,您都可以通过尝试以下方法查看对象是否看起来不错: 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);
...
我希望这有所帮助!