Это может звучать как вопрос о нобе, но я думаю, что я все пробовал, и ive застрял в течение нескольких недель, и это не делало никаких успехов.
Это мой рабочий код:
//$connect holds my db login details so ill hide it
$query = '
SELECT *,UNIX_TIMESTAMP(CONCAT_WS(" ", ranking_data_date, ranking_data_time)) AS datetime
FROM tbl_ranking_data
ORDER BY ranking_data_date ASC, ranking_data_time ASC LIMIT 60
';
$result = mysqli_query($connect, $query);
$rows = array();
$table = array();
$table['cols'] = array(
array(
'label' => 'Date Time',
'type' => 'datetime'
),
array(
'label' => 'Position',
'type' => 'number'
)
);
while($row = mysqli_fetch_array($result))
Моя проблема в том, что он всегда выбирает одни и те же данные (и все) из базы данных.
Чтобы исправить это, в идеале было бы вставить предложение where, например:
WHERE user_id=$id_of_current_user
Но я не могу войти в это или что-нибудь, или я получу ошибку.
В основном код такой же, как и выше, но с этой разницей:
//$connect holds my db login details so ill hide it
$query = '
SELECT *,UNIX_TIMESTAMP(CONCAT_WS(" ", ranking_data_date, ranking_data_time)) AS datetime
FROM tbl_ranking_data
WHERE user_id=$id_of_current_user
ORDER BY ranking_data_date ASC, ranking_data_time ASC LIMIT 60
';
Показывает эту ошибку:
Предупреждение: mysqli_fetch_array() ожидает, что параметр 1 будет mysqli_result, boolean задан в файле /files/phpfile.php в строке 32
Мое понимание: запрос терпит неудачу, и он возвращает false (поэтому ошибка говорит о логическом) вместо массива ($ result), но он не должен терпеть неудачу!
он только терпит неудачу, если я добавлю условие WHERE.
Любая помощь оценивается.
Как я могу вставить предложение where в этот код?
Проблема с вашим запросом - это не предложение where, это переменная в вашем аргументе where. Если вы повторите свой запрос при возникновении такой проблемы, вы увидите, что запрос не имеет правильного синтаксиса.
PHP не поддерживает значения переменных в строке, которые используют одинарные кавычки. Вместо этого используйте двойные кавычки.
Кроме того, используйте обратные ссылки для указания имен столбцов и имен таблиц. Это позволит избежать проблем с зарезервированными словами.
Наконец, используйте параметризованные запросы, чтобы избежать проблем с цитированием данных, а также SQL Injection.
// $connect holds my db login details so I'll hide it
$query = "
SELECT
*,
UNIX_TIMESTAMP(CONCAT_WS(' ', 'ranking_data_date', 'ranking_data_time')) AS 'datetime'
FROM 'tbl_ranking_data'
WHERE 'user_id' = $id_of_current_user
ORDER BY 'ranking_data_date' ASC, 'ranking_data_time' ASC
LIMIT 60;
";
$result = mysqli_query($connect, $query);
$rows = array();
$table = array();
$table['cols'] = array(
array(
'label' => 'Date Time',
'type' => 'datetime'
),
array(
'label' => 'Position',
'type' => 'number'
)
);