Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.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 检查表中是否存在具有的数据_Php_Mysql - Fatal编程技术网

Php 检查表中是否存在具有的数据

Php 检查表中是否存在具有的数据,php,mysql,Php,Mysql,如何查找表并搜索是否存在行。它后面的桌子叫做敌人。每一行都有一个唯一的id,并设置为自动递增。每行还具有一个称为monsterid的唯一值。怪物id不是自动递增的 当怪物死亡时,该行被删除并替换为新行。所以id总是在变化。同时怪物ID也被改变了 我在php中使用$_GET方法,monsterid正在通过它, 基本上,我正在努力做到这一点 $monsterID=334322//这是通过$\u GET传递的id checkMonsterId=“检查敌人表中是否存在怪物id” 如果monsterid存

如何查找表并搜索是否存在行。它后面的桌子叫做敌人。每一行都有一个唯一的id,并设置为自动递增。每行还具有一个称为monsterid的唯一值。怪物id不是自动递增的

当怪物死亡时,该行被删除并替换为新行。所以id总是在变化。同时怪物ID也被改变了

我在php中使用$_GET方法,monsterid正在通过它, 基本上,我正在努力做到这一点

$monsterID=334322//这是通过$\u GET传递的id

checkMonsterId=“检查敌人表中是否存在怪物id”

如果monsterid存在,则
{运行PHP}

否则
{运行PHP}


如果你还需要澄清,请询问。提前感谢您的帮助。

使用
count
!如果它返回>0,则它存在,否则它不存在

select count(*) from enemies where monsterid = 334322
您可以在PHP中使用它(连接到数据库后):


使用
计数
!如果它返回>0,则它存在,否则它不存在

select count(*) from enemies where monsterid = 334322
您可以在PHP中使用它(连接到数据库后):


mysql\u real\u escape\u字符串对于防止这种情况非常重要


mysql\u real\u escape\u字符串对于防止这种情况非常重要

使用count,比如

从怪物ID=334322的敌人中选择计数(*)

但是,请确保已将monsterid上的索引添加到表中。原因是,如果您不这样做,并且这不是主键,那么rdbms将被迫发出一个完整的表扫描——读取每一行——以返回值。在小型数据集上,这并不重要,因为表可能无论如何都会位于核心中,但一旦行数变得重要,并且您要点击磁盘进行扫描,速度差很容易达到两个数量级或更多

如果行数非常少,那么不索引是合理的,因为在插入数据时使用非主键索引需要额外的开销,但是这应该是一个明确的决定(我经常给客户留下深刻印象,这些客户使用一个程序员,他不了解数据库,通过向表中添加索引,这在程序员创建表时是很好的,但在加载真实数据量时,随后会慢到爬行的速度——非常令人惊讶的是,添加索引的一行sql将为您赢得客户眼中的大师地位,因为您做出了他的选择。)阀杆(可再次使用)

如果您使用subselect对数据库进行更复杂的查询,比如查找没有怪物的所有位置,然后查找sql EXISTS子句的用法。这通常被程序员忽略(诱惑是返回实际值的计数)而且使用它通常比其他方法更快。

使用计数,如

从怪物ID=334322的敌人中选择计数(*)

但是,请确保您已经在表中添加了monsterid索引。原因是,如果您没有添加索引,并且这不是主键,那么rdbms将被迫执行完整的表扫描(读取每一行)以返回值。在小数据集上,这并不重要,因为表可能仍然位于核心中,但一旦不在核心中行的数量变得非常重要,你正在点击磁盘进行扫描,速度差很容易达到两个数量级或更多

如果行数非常少,那么不索引是合理的,因为在插入数据时使用非主键索引需要额外的开销,但是这应该是一个明确的决定(我经常给客户留下深刻印象,这些客户使用一个程序员,他不了解数据库,通过向表中添加索引,这在程序员创建表时是很好的,但在加载真实数据量时,随后会慢到爬行的速度——非常令人惊讶的是,添加索引的一行sql将为您赢得客户眼中的大师地位,因为您做出了他的选择。)阀杆(可再次使用)

如果您使用subselect对数据库进行更复杂的查询,比如查找没有怪物的所有位置,然后查找sql EXISTS子句的用法。这通常被程序员忽略(诱惑是返回实际值的计数)而且使用它通常比替代品更快。

更简单:

从怪物ID=334322的敌人中选择1

如果它返回一行,则有一行,如果没有,则没有。

更简单:

从怪物ID=334322的敌人中选择1


如果它返回一行,你就有一行,如果没有,你就没有了。

谢谢你Eric,谢谢你的回复。我现在似乎得到了资源#ID 5。我得到了它。使用你的方法。再次感谢你Eric的帮助。谢谢你Eric,谢谢你的回复。我现在似乎得到了资源#ID 5。我得到了它。使用你的方法。再次感谢你Eric的帮助帮助。我一定会调查EXISTS条款。谢谢你的建议。我一定会调查EXISTS条款。谢谢你的建议。
$monsterid = mysql_real_escape_string($_GET['monsterid']);
$query = intval(mysql_query("SELECT count(*) FROM enemies WHERE monsterid = '$monsterid'));
if (mysql_result > 0) {
    // monster exists
} else {
    // monster doesn't exist
}