2016-11-27 3 views
-1

Я пытаюсь создать php-код, где, если я поместил в свою базу данных URL-адрес, код подберет это, перейдя по URL-адресу и посмотрев, какой HTTP-код он получит, но в настоящее время все, что он делает, это дать мне HTTP- код 0 вместо права.Почему я могу заставить mysqli_fetch_assoc работать?

$username = "root"; 
$password = "luca170385"; 
$hostname = "localhost"; 

$dbhandle = mysqli_connect($hostname, $username, $password) 
or file_put_contents($filename, date("Y-m-d H:i:s")."Unable to connect to database", FILE_APPEND); 
echo "Connect to MySQL<br>"; 

$selected = mysqli_select_db($dbhandle , "accounts") 
or file_put_contents($filename, date("Y-m-d H:i:s")."Could not select database<br>", FILE_APPEND); 
echo "Selected Database<br>"; 

$sql = "SELECT `address` FROM `url` WHERE `code` IS NULL"; 

if ($result = mysqli_query($dbhandle, $sql)){ 

    while ($row = mysqli_fetch_assoc($result));{ 
    printf ($row['address']); 
    $output = "{$row['address']}"; 
    echo "{$row['address']}"; 
    $handle = curl_init($sql); 
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE); 

    $response = curl_exec($handle); 

    $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE); 
    $update = "UPDATE url SET `code`= $httpCode WHERE `address` = $sql"; 
    echo "$update.<br>"; 
    echo "$handle.<br>"; 
    echo "$httpCode.<br>"; 

    mysqli_query($dbhandle, $update); 
    echo "{$row['address']}"; 

    curl_close($handle); 
    } 
}else { 
    echo 'Not working'; 
} 
+1

'в то время как ($ строка = mysqli_fetch_assoc ($ результат));' <<< вы видите, что точка с запятой? Это символ «end of statement», и вы бы не получили ошибку для него, так как это «действительный» оператор в PHP. –

+1

Согласно http://php.net/manual/en/language.basic-syntax.instruction-separation.php * «Как и в C или Perl, PHP требует, чтобы инструкции заканчивались точкой с запятой в конце каждого оператора. Закрывающий тег блока кода PHP автоматически подразумевает точку с запятой, вам не нужно иметь точку с запятой, завершающую последнюю строку блока PHP. Закрывающий тег для блока будет включать в себя сразу завершающую новую строку, если таковая присутствует. * * –

+0

Btw, ваш запрос терпит неудачу в верхней части точки с запятой. Повторите этот запрос, и вы увидите, что он делает. –

ответ

1

Проверьте комментарии: -

<?php 
error_reporting(E_ALL);// check all type of error 
ini_set('display_errors',1);// display those errors 
$username = "root"; 
$password = "luca170385"; 
$hostname = "localhost"; 

$dbhandle = mysqli_connect($hostname, $username, $password, "accounts"); 
/*or file_put_contents($filename, date("Y-m-d H:i:s")."Unable to connect to database", FILE_APPEND); 
echo "Connect to MySQL<br>";*/// from where this $filename come from? 

/*$selected = mysqli_select_db($dbhandle ,) 
or file_put_contents($filename, date("Y-m-d H:i:s")."Could not select database<br>", FILE_APPEND); 
echo "Selected Database<br>";*/ //not needed 

$sql = "SELECT `address` FROM `url` WHERE `code` IS NULL"; 

if ($result = mysqli_query($dbhandle, $sql)){ 

    while ($row = mysqli_fetch_assoc($result)){ // remove ; 
     printf ($row['address']); 
     $output = $row['address']; // remove {} and "" 
     echo $row['address']; // remove {} and "" 
     $handle = curl_init($sql); 
     curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE); 

     $response = curl_exec($handle); 

     $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE); 
     $update = "UPDATE url SET `code`= $httpCode WHERE `address` = $output"; // not $sql 
     echo "$update.<br>"; 
     echo "$handle.<br>"; 
     echo "$httpCode.<br>"; 
     mysqli_query($dbhandle, $update); 
     echo $row['address'];// remove {} and "" 
     curl_close($handle); 
    } 
}else { 
    echo 'Not working'; 
} 
+0

Я решил не публиковать ответ (только комментарии), видя, что их код терпит неудачу более чем на один счет. –

+0

'echo 'Не работает',' не поможет им здесь и должен включать правильную обработку ошибок для запроса, и это для всех запросов. –

2

; завершает время, поэтому он пуст.

while ($row = mysqli_fetch_assoc($result)); 

Поэтому вам нужно просто удалить ;.

+1

* «Я думаю» * - вы должны удалить это, если не уверены. Я уверен. –

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