有一个脚本会ping“ip_address”列中的所有ip地址,我需要在他在“status”列中写入的报告后ping。即如果计算机处于联机状态,则在“status”列中写入值1,如果脱机数据库设置为0.示例:
他不想写这个值。这是我的剧本:
<?php
include('db.php');
foreach($test as $value){
exec("ping -c 4 " . $value->ip_address, $output, $result);
if ($result == 0) {
$insert_sql = "INSERT INTO test ('status')VALUES('1');";
}else{
$insert_sql = "INSERT INTO test ('status')VALUES('0');";
}
echo "<br/>" . $insert_sql;
}
?>
这就是:
UPD:
<?php
include('db.php');
foreach($test as $value){
exec("ping -c 4 " . $value->ip_address, $output, $result);
if ($result == 0) {
$insert_sql = "update test set status='1' where ip_addres = '".$value->ip_address."'";
mysqli_query($insert_sql);
}else{
$insert_sql = "update test set status='0' where ip_addres = '".$value->ip_address."'";
mysqli_query($insert_sql);
}
}
?>
那是对的吗?
答案 0 :(得分:0)
您必须使用更新语法:
<?php
include('db.php');
foreach($test as $value){
exec("ping -c 4 " . $value->ip_address, $output, $result);
if ($result == 0) {
$insert_sql = "update test set status='1' where ip_addres = '".$value->ip_address."'";
}else{
$insert_sql = "update test set status='0' where ip_addres = '".$value->ip_address."'";
}
echo "<br/>" . $insert_sql;
}
?>
并且不要在列名称周围使用单个qoutes。单引号仅适用于字符值。如果你必须转义列名,你必须使用反引号。
答案 1 :(得分:0)
你需要:
现在,您只是将语句发送到输出。
答案 2 :(得分:0)
这是您的问题的示例工作代码,请尝试:
$test = array('www.google.com','msn.com','yahoo.com','stackoverflow.com','bhokat.com');
var_dump($test);
foreach ($test as $key => $value) {
exec("ping -n 1 $value",$output[],$retval);
if (strlen($output[$key][0]) > 0) {
$sql = "UPDATE test SET status='1' WHERE ip_address=$value";
} else {
$sql = "UPDATE test SET status='1' WHERE ip_address=$value";
}
echo "<br/>" ;
}
根据您的需要更改更新查询。如果已经存在,则需要更新该字段,否则可以在if和else部分中添加额外的检查。