2009-08-06 3 views
-2

Я получаю эту ошибку, когда я использую этот код для людей, чтобы вводить данные. Форма заявки не будет указана, потому что это не полезно в этом случае:Поставляемый аргумент не является допустимым ресурсом результата MySQL?

function some_more_custom_content() { 

    $output="<BR>"; 

    ob_start(); 

    if ($_REQUEST['code'] != "") { 
     $code = $_REQUEST['code']; 
     $query="INSERT INTO `fc` (`code`,`datetime`) values ('" . mysql_real_escape_string($code) . "', now())"; 
     $result=mysql_query($query); 

     while ($fetch_array = mysql_fetch_array($result)) { 
      $seconds = time() - strtotime($fetch_array["datetime"]); 

      if ((time() - $entry['datetime']) < 60*60) { 
       echo ("The code " . htmlentities($code) ." was updated less than an hour ago."); 
      } else { 
       echo ("Inserted " . htmlentities($code) ." into the top."); 
      } 
     } 
    } 

Любая идея, почему?

+0

Случайный комментарий к лучшей практике: При использовании операторов «эхо» не объединяйте свою строку. Используйте запятые вместо периодов. Функция эха может принимать несколько строк в качестве аргументов. Пример: echo ("Inserted", htmlentities ($ code), "вверху.") Это ускоряет время выполнения. – Mark

ответ

4

INSERT заявления не возвращают ресурс, они возвращают TRUE по успеху или FALSE при сбое. Таким образом, для работы не существует ресурса для mysql_fetch_array().

(Это одна из главных причин, почему люди жалуются на PHP. - семантика непоследовательны в лучшем случае)

+0

Итак, как я могу исправить его и сделать его более чистым? – 2009-08-06 02:02:30

+0

Ну, во-первых, что вы пытаетесь сделать с этим, пока блокируете? Если вы просто хотите узнать, была ли вставка успешной или неудачной, ответ Deintegrator ниже будет позаботиться об этом. –

+0

Согласен, что в php есть несоответствия, но в этом случае? Какой (полезный) ресурс должен возвращать mysql_query() для операции INSERT? – VolkerK

2

Добавление Мередит Ответ. Вы Шоул использовать

if($result!==FALSE) { 
    // the insert was ok 
} else { 
    //the inser failed 
} 
0

изменение:

$result=mysql_query($query); 

с:

$result=mysql_query($query) or die(mysql_error()); 

вы увидите сообщение об ошибке.

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

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