mysql_fetch_array иногда дает сбой

#mysql #arrays #variables #fetch

#mysql #массивы #переменные #выборка

Вопрос:

Я пытаюсь реализовать подключение к платформе онлайн-платежей.

Один из файлов доставляет мне некоторые проблемы, потому что иногда код работает, иногда нет… И я не могу понять, почему…

Вот где происходит сбой кода…

 $sql = "select transidmerchant,totalamount from nsiapay where     transidmerchant='".$order_number."'and trxstatus='Verified'";
$result = mysql_query($sql);
**$checkout = mysql_fetch_array($result);**
echo "sql : ".$sql;
$hasil=$checkout['transidmerchant'];
echo "hasil: ".$hasil;
$amount=$checkout['totalamount'];
echo "amount: ".$amount;
    // Custom Field
if (!$hasil) {
  echo 'Stop1';
} else {
    if ($status=="Success") {}
}
  

Это всего лишь часть кода, но я думаю, этого достаточно, чтобы вы попытались увидеть проблему… Он завершается ошибкой в жирной строке, $checkout = mysql_fetch_array($result);
Странно то, что «echo sql» работает, и он показывает правильные значения, но затем, когда я помещаю их в массив, иногда переменные передаются, иногда нет… И так, при переходе к if (!$hasil) происходит сбой, потому что значение пустое… но иногда это работает…

Есть идеи о том, что может произойти?

Спасибо Luis

Комментарии:

1. Вместо того, чтобы делать if (!$hasil) , попробуйте сделать if ($hasil === false) . Он должен проверять, является ли возвращаемое значение false, а не равно ли значение false (поскольку false может означать 0, или null, или «в PHP)

2. вы пробовали использовать echo «<pre>»; print_r ($ checkout); echo»</ pre>»;

3. * fin1te, я пробовал это, это сработало! большое спасибо 🙂 простое и понятное решение : d, Луис

Ответ №1:

Единственный способ, которым происходит сбой, — это когда запрос ничего не возвращает.

Правильным способом было бы проверить, возвращается ли что-то:

 $sql = "select transidmerchant,totalamount from nsiapay where     transidmerchant='".$order_number."'and trxstatus='Verified'";
$result = mysql_query($sql);
if($checkout = mysql_fetch_array($result)){
    $hasil = $checkout['transidmerchant'];
    echo "hasil: ".$hasil;
    $amount=$checkout['totalamount'];
    echo "amount: ".$amount;
        // Custom Field
    if (!$hasil) {
      echo 'Stop1';
    } else {
        if ($status=="Success") {}
    }
}else{
    echo "Empty query result";
}
  

Комментарии:

1. Спасибо за вашу помощь, бриедис, но пока я остановлюсь на решении fin1te

2. Но все же вам следует проверить, не возвращается ли что-либо запросом, потому что в противном случае у вас появится сообщение об ошибке, и его не следует игнорировать.