2013-10-03 5 views
-4

Я хочу, чтобы обновить MySQL поле только тогда, когда Интернет работает ..... Чтобы проверить интернет мой сценарий являетсяОбновление MySQL, только если интернет подключен

<?php 
//function to check if the local machine has internet connection 
function checkConnection() 
{ 
    //Initiates a socket connection to www.itechroom.com at port 80 
    $conn = @fsockopen("www.google.com", 80, $errno, $errstr, 30); 
    if ($conn) 
    { 
     $status = "Connection is OK"; 
     fclose($conn); 
    } 
    else 
    { 
     $status = "NO Connection<br/>\n"; 
     $status .= "$errstr ($errno)"; 
    } 
    return $status; 
} 

echo checkConnection(); 
?> 

Я хочу, чтобы выполнить этот запрос, если соединение это нормально еще не запустить его

<?php 
///////////////////////////////////////////////////////////////////////////////// 
//////////////////////////////////////////////// 
$con=mysqli_connect("localhost","root","","ex_smartcard2013"); 

if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

mysqli_query($con,"UPDATE fess SET status=1 WHERE status=0 order by id desc limit 1"); 
mysqli_close($con); 

?> 

Как это сделать ............

+0

Просто проверьте результат 'checkConnection()' и выполните соединение, когда '$ status' - это то, что вы хотите, я думаю? Я не понимаю, что вам не хватает ... – icedwater

+0

любезно заполните этот запрос для меня –

+0

Откуда вы знаете, что соединение в порядке? Что вы ожидаете от 'checkConnection()'? – icedwater

ответ

2

Используйте функцию, как это.

<?php 
//function to check if the local machine has internet connection 
function checkConnection() 
{ 
    //Initiates a socket connection to www.itechroom.com at port 80 
    $conn = @fsockopen("www.google.com", 80, $errno, $errstr, 30); 
    if ($conn) 
    { 
     $status = true; 
    } 
    else 
    { 
     $status = false; 
     //$status .= "$errstr ($errno)"; 
    } 
    fclose($conn); 

    return $status; 
} 

if(checkConnection()) { 

    $con=mysqli_connect("localhost","root","","ex_smartcard2013"); 

    if (mysqli_connect_errno()) 
    { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    mysqli_query($con,"UPDATE fess SET status=1 WHERE status=0 order by id desc limit 1"); 
    mysqli_close($con); 

} 
?> 
+0

Точно - важная строка 'if (checkConnection())' ... при условии, что вы модифицируете функцию, подобную этой, чтобы вернуть логическое значение. – icedwater

0

Изменение Salim's answer и JTC's notation, мы получаем

function checkConnection() { 
    return $conn = @fsockopen("www.google.com", [80|443]); 
} 

if (checkConnection()) { 
    $con = mysqli_connect(...); 
    // the rest is yours 
} 

Если вы предпочитаете использовать свой собственный checkConnection(), как описано выше, а затем просто проверить соответствующее состояние. Что бы вы ожидали, что он вернется?

$hasInternet = checkConnection(); 

if ($hasInternet == "...") { 
    // ... 
} 

Также примечание стороны: если подключение к Интернету работает, но у вас нет доступа к службе DNS, @fsockopen будет лежать на вас. По этой причине я всегда предпочитаю 4.2.2.4, когда пингует что-то, чтобы увидеть, могу ли я ...

Смежные вопросы