функция в MySQL, чего мне не хватает?

#php #mysql #function

#php #mysql #функция

Вопрос:

У меня есть функция для вычисления некоторой математики, но, похоже, она не будет помещаться в базу данных…

Есть ли что-то, чего я не знаю или?

 function overskud($odds, $indskud) {
    $overskud1 = $indskud * $odds;
    $overskud2 = $overskud1 - $indskud;
    echo "$overskud2";
}   
$overskud = overskud($odds, $indskud);
mysql_query("INSERT INTO ODDS_kupon (kamp,odds,indskud,overskud,resultat,af,dato_ar,dato_moned,dato_dag) VALUES ('$kamp', '$odds', '$indskud', '$overskud2', '0', '$profilid', '$datoar', '$datomoned', '$datodag')");
 

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

1. Ваша функция ничего не return делает, она просто echo выдает свой результат.

2. $ overskud повторяет результат, например 2, 100 возвращает мне 100..

3. что mysql_error() это?

4. echo просто выводит значение на экран. return позволяет сохранять значение в переменной.

Ответ №1:

Вам нужен return результат, а не echo он:

 function overskud($odds, $indskud) {
    $overskud1 = $indskud * $odds;
    $overskud2 = $overskud1 - $indskud;
    return "$overskud2";
}   
$overskud = overskud($odds, $indskud);
mysql_query("INSERT INTO ODDS_kupon (kamp,odds,indskud,overskud,resultat,af,dato_ar,dato_moned,dato_dag) VALUES ('$kamp', '$odds', '$indskud', '$overskud2', '0', '$profilid', '$datoar', '$datomoned', '$datodag')");
 

Возможно, вам потребуется изменить это на return массив значений, который включает $overskud2 в себя в дополнение к $overskud , поскольку ваш INSERT запрос использует эту переменную (но если она не определена в другом месте в коде, не опубликованном, она не входит в область видимости из-за того, что находится внутри функции).

echo просто выводит данные на страницу / буфер, return фактически передает значение обратно тому, кто его вызвал, и позволяет присваивать переменные через вывод функции.

Ответ №2:

В вашем запросе используется переменная $overskud2 , но вы ее не определили (она существует только внутри функции). Я полагаю, вы имели в виду $overskud .

И функция должна return приводить к результату, а не echo к нему (путать со сценариями оболочки?).

Ответ №3:

попробуйте это.. вы должны возвращать что-то в вызов функции

 function overskud($odds, $indskud) {
    $overskud1 = $indskud * $odds;
    $overskud2 = $overskud1 - $indskud;
    return $overskud2;
}   
$overskud = overskud($odds, $indskud);
mysql_query("INSERT INTO ODDS_kupon(kamp,odds,indskud,overskud,resultat,af,dato_ar,dato_moned,dato_dag) VALUES('$kamp','$odds', '$indskud', '$overskud', '0', '$profilid', '$datoar', '$datomoned', '$datodag')");