Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php where子句中的未知列,但I';我已经核实过了_Php_Mysql_Mysqli - Fatal编程技术网

Php where子句中的未知列,但I';我已经核实过了

Php where子句中的未知列,但I';我已经核实过了,php,mysql,mysqli,Php,Mysql,Mysqli,我正在努力解决这个简单的SQL语句行 运行它总是给我错误:错误:“where子句”中的未知列“漫画” 这通常是一个简单的解决方案。。。只需进行检查以确保“table_name”列中的“comics”作为条目存在。但我已经检查过了 我看不出我的SQL有任何问题: $sql = "SELECT ip FROM votes WHERE ip = '".$_SERVER['REMOTE_ADDR']."' AND table_name = $table AND imgid = $imgid"; 编辑

我正在努力解决这个简单的SQL语句行

运行它总是给我错误:
错误:“where子句”中的未知列“漫画”

这通常是一个简单的解决方案。。。只需进行检查以确保“table_name”列中的“comics”作为条目存在。但我已经检查过了

我看不出我的SQL有任何问题:

$sql = "SELECT ip FROM votes WHERE ip = '".$_SERVER['REMOTE_ADDR']."' AND table_name = $table AND imgid = $imgid";
编辑:

顺便说一句,我已经用引号试过了:

    $sql = "SELECT ip FROM votes WHERE ip = '".$_SERVER['REMOTE_ADDR']."' AND table_name = '$table' AND imgid = $imgid";
但这就产生了一个错误:

Fatal error: Call to undefined method mysqli_result::num_rows() in C:\wamp\www\HTwS\scripts\likecounter.php on line 40
有人能帮忙吗


谢谢

表名的值是一个字符串,因此必须在查询中单引号引用。如果不能将其作为字符串值引用,MySQL将假定提供的未引用的
$table
是一个列标识符

$sql = "SELECT ip FROM votes WHERE ip = '".$_SERVER['REMOTE_ADDR']."' AND table_name = '$table' AND imgid = $imgid";
//------------------------------------------------------------------------------------^^^^^^^^^
如果
$imgid
也是一个非数字值,则还需要引用该值

如果它是用户输入的结果,我们假设它已经针对SQL注入进行了适当的过滤。我要注意的是,由于更新包含MySQLi特定的代码,因此您确实应该这样做,而不是对
MySQLi::query()
进行构造字符串调用


问题更新和评论后编辑: 调用未定义的方法mysqli_result::num_rows()

错误消息表示您试图使用
()
而不是属性作为方法调用访问MySQLi result属性
num_rows
。您应该使用:

$result->num_rows
。。。而不是

$result->num_rows()

table_name
的值是一个字符串,因此必须在查询中单引号引用。如果不能将其作为字符串值引用,MySQL将假定提供的未引用的
$table
是一个列标识符

$sql = "SELECT ip FROM votes WHERE ip = '".$_SERVER['REMOTE_ADDR']."' AND table_name = '$table' AND imgid = $imgid";
//------------------------------------------------------------------------------------^^^^^^^^^
如果
$imgid
也是一个非数字值,则还需要引用该值

如果它是用户输入的结果,我们假设它已经针对SQL注入进行了适当的过滤。我要注意的是,由于更新包含MySQLi特定的代码,因此您确实应该这样做,而不是对
MySQLi::query()
进行构造字符串调用


问题更新和评论后编辑: 调用未定义的方法mysqli_result::num_rows()

错误消息表示您试图使用
()
而不是属性作为方法调用访问MySQLi result属性
num_rows
。您应该使用:

$result->num_rows
。。。而不是

$result->num_rows()

见我的编辑上面,我想包括。。。我已经试过了,它在上面抛出了错误我也试过了,没有$imgid上的引号,也没有$table上的单引号,但是它抛出了错误哇,我真的应该试着有时读取实际的错误消息。。。这就是解决办法!哈哈,谢谢!见我的编辑上面,我想包括。。。我已经试过了,它在上面抛出了错误我也试过了,没有$imgid上的引号,也没有$table上的单引号,但是它抛出了错误哇,我真的应该试着有时读取实际的错误消息。。。这就是解决办法!哈哈,谢谢!