2011-06-08 29 views
0

我问了一些关于in_array()的问题,我已经得到了这个工作。但现在我有一个不同的问题:检查数据是否在表

我有一个表,说哪些服务分配给主机:services_hosts(service_id,host_id)。

如何查看所选服务是否已分配给该主机?基本上,我想看看该表中是否已存在特定行(service_id,host_id)。

编辑: 的问题是,我想在具有连接到数据库的功能一个单独的文件进行比较:

function addServiceToHost($service_name, $host_id) 
{ 
$query = "INSERT INTO monitoring_hosts_services (service_id, host_id) values ((SELECT service_id FROM monitoring_services WHERE name = '".$service_name."'), '".$host_id."')"; 
$result = @pg_exec($this->conn, $query); 
    if ($row = pg_fetch_row($result)) 
    { 
    "blabla error msg" 
    exit; 
    } 
    return $this->parseResultObj($result); 
} 
+0

请给出更多信息,发布表结构例如 – Marc 2011-06-08 14:18:08

+0

所以你想知道这个函数是否已经在?之前运行?或者如果它已经设置? – 2011-06-09 16:29:12

回答

1

我可能无法正确unserstand你的问题,但会这样做的伎俩:

SELECT * FROM ServerHostsTable WHERE service_id = '5' AND host_id = '8' 
0
$query = ("SELECT * FROM ServerHostsTable WHERE service_id = '5' AND host_id = '8'") 

if(mysql_num_rows($query)>0) 
{ 
    //the item is in the db 
} 
else 
{ 
    //not in the db 
} 

希望这有助于

+0

检查编辑。感谢您的回答 – aocferreira 2011-06-08 14:35:01

0

你的问题是没有非常明确,但从我的理解你想测试是否一个特定的行被插入到数据库表中。你可以这样做:

$result=mysql_query("SELECT service_id FROM services_hosts WHERE service_id=$theserviceid AND host=$thehostid"); 
if($row=mysql_fetch_row($result){ 
echo "already in the db"; 
} else { 
echo "not in the db!"; 
} 
+0

检查编辑请。感谢您的回答 – aocferreira 2011-06-08 14:34:45

0

我会运行此查询。

$sql = "SELECT COUNT(*) AS ret\n"; 
$sql.= "FROM services_hosts\n"; 
$sql.= "WHERE service_id = $service_id\n"; 
$sql.= "AND host_id = $host_id"; 

结果应该是一个行同一个场(名为ret):

  • 0 - 服务不存在于主机上
  • 1 - 服务是否存在主机上
  • 还有其他 - 数据库中的表存在问题