Функция MySQL AVG, возвращающая 0

Я использую код ниже для запроса базы данных.

mysql_query ("SELECT * FROM _$symbol ORDER BY date DESC;");

$_10day = mysql_query ("SELECT AVG(close) FROM _$symbol limit 10;");
$_21day = mysql_query ("SELECT AVG(close) FROM _$symbol limit 21;");
$_50day = mysql_query ("SELECT AVG(close) FROM _$symbol limit 50;");

echo "$_10day\n";
echo "$_21day\n";
echo "$_50day\n";mysql_query ("INSERT INTO _$symbol(_10day) VALUE ('$_10day');");

echo mysql_errno($sql) . ": " . mysql_error($sql). "\n";

Мне нужно получить среднее значение close из базы данных, и я использую AVG()функции, а затем вставьте возвращаемое значение в базу данных. Запросы работают в MySQL, однако они не работают через скрипт. Он вводит значение в базу данных, но всегда вводит 0, Что я делаю неправильно?

РЕДАКТИРОВАТЬ — решение найдено

$get10 = mysql_query ("SELECT AVG( close ) AS CloseAverage from ( SELECT close FROM _$symbol ORDER BY date DESC limit 10 ) sub1 ;");

$row = mysql_fetch_assoc($get10);
$_10day = $row['CloseAverage'];

if (!mysql_query ("UPDATE _$symbol SET _10day = $_10day, _21day = $_21day, _50day = $_50day, _100day = $_100day, _120day = $_120day, _150day = $_150day, _200day = $_200day, _240day = $_240day, _20dayVol = $_20dayVol, _50dayVol = $_50dayVol where date = '$date';"))
{
echo "Update query failed";
}

Я неправильно его запрашивал, видимо, его нужно было выбрать в качестве подзапроса, решение выше, оно работает сейчас.

-1

Решение

Вот пример того, как управлять несколькими результирующими строками:

function connect()
{
$db = mysql_connect("localhost","username","password") or die("your error msg");
mysql_select_db("database_name");
return $db;
}

$db = connect();

$query = "SELECT value1 FROM my_table";
$result = mysql_query($query, $db);

while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
// This one will loop through the data in your output//
$outputValue = $row['value1'];

}

Для вставки данных:

// Continued from the state above //
$query = "INSERT INTO table_name (column1) VALUES (value1)";
$result = mysql_query($query, $db) or die(mysql_error());
0

Другие решения

$_10day является результатом MySQL, а не значением. Вы не можете просто поместить результат в строку запроса и ожидать, что он будет работать.

Вы должны сначала получить данные результата, например;

while($row = mysql_fetch_assoc($_10day)) {
$10day = $row['AVG(close)'];
}

Затем вы можете выполнить ваш запрос вставки;

mysql_query ("INSERT INTO _$symbol (_10day) VALUES ('$10day')");

Надеюсь это поможет.

0

По вопросам рекламы [email protected]