#php #mysql #sql
#php #mysql #sql
Вопрос:
Настройка -> Использование host gator, php, phpmyadmin, mysql:
PHP-код (в файле с именем ajaxTest.php ):
<?php
$con=mysqli_connect("localhost","refinedc_dbadmin","password","refinedc_currency");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else
{
$result = mysqli_query($con,"SELECT * FROM ITEMS");
if (!$check1_res) {
printf("Error: %sn", mysqli_error($con));
exit();
}
echo '[';
while($row = mysqli_fetch_array($result))
{
echo '{';
echo '"ID":' . '"' . $row['ID'] . '",';
echo '"YEAR":' . '"' . $row['YEAR'] . '",';
echo '"QUANTITY":' . '"' . $row['QUANTITY'] . '",';
echo '"DENOMINATION":' . '"' . $row['DENOMINATION'] . '",';
echo '"TYPE":' . '"' . $row['TYPE'] . '",';
echo '"COUNTRY":' . '"' . $row['COUNTRY'] . '",';
echo '"COIN_NAME_OR_TITLE":' . '"' . $row['COIN_NAME_OR_TITLE'] . '",';
echo '"COLLECTIBLE_METAL_ONE":' . '"' . $row['COLLECTIBLE_METAL_ONE'] . '",';
echo '"COLLECTIBLE_METAL_TWO":' . '"' . $row['COLLECTIBLE_METAL_TWO'];
echo '},';
}
echo ']';
}
mysqli_close($con);
?>
таблица phpmyadmin:
уровни доступа mysql для пользователя и базы данных:
пользователь добавлен в базу данных:
И когда я захожу на страницу, я получаю эту проблему:
ОБНОВЛЕНИЕ — изменен SQL для чтения SELECT * ИЗ элементов… Теперь получите это, когда я пытаюсь попасть на страницу (попадает на код ошибки и запускает exit (), но не выводит ошибку:
Почему я получаю ошибку table does not exist? Я уже сократил имя базы данных и перестроил новое, но оно по-прежнему говорит, что оно не существует!
Комментарии:
1. вы имеете в виду
SELECT * FROM items
?2. @bansi когда я меняю его на нижний регистр, он все равно переходит к проверке ошибок и вызывает ‘exit ()’, но не выводит никаких ошибок…
3. что такое
$check1_res
? Я думаю, вам следует использоватьif (!$result){
4. Кроме того, вы пытаетесь преобразовать его в json? затем попробуйте использовать json_encode
5. @bansi ты милый ублюдок! это сделало свое дело! Я не слишком уверен, что такое $check1_res, это было на примере php W3schools ….. но ваш способ сработал и вернул мне данные json! Большое вам спасибо. вы должны включить это в ответ со всеми тремя вашими советами, и я выберу его как правильный 😉
Ответ №1:
В именах таблиц Windows не чувствительны к регистру, в то время как в системах * nix имена таблиц чувствительны к регистру.
Host gator, скорее всего, работает в unix, следовательно, если ваша таблица имеет имя
items
вам нужно назвать это как таковое
$result = mysqli_query($con,"SELECT * FROM items");
Комментарии:
1. когда я меняю его на нижний регистр, он по-прежнему переходит к проверке ошибок и вызывает ‘exit()’, но не выводит никаких ошибок…
Ответ №2:
Вот исправленный код. Я добавил комментарий в сам код.
<?php
$con=mysqli_connect("localhost","refinedc_dbadmin","password","refinedc_currency");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else
{
$result = mysqli_query($con,"SELECT * FROM `items`");
// Check if result is ok
// if there is an error $result will be false and the error details is available in mysqli_error()
if (!$result) {
printf("Error: %sn", mysqli_error($con));
exit();
}
// Use json_encode to convert data to json.
// It is too tedious and error prone to convert data to json by hand.
$data = array();
while($row = mysqli_fetch_array($result))
{
//Store the result to array
$data[]=array(
"ID" => $row['ID'],
"YEAR" => $row['YEAR'],
"QUANTITY" => $row['QUANTITY'],
"DENOMINATION" => $row['DENOMINATION'],
"TYPE" => $row['TYPE'],
"COUNTRY" => $row['COUNTRY'],
"COIN_NAME_OR_TITLE" => $row['COIN_NAME_OR_TITLE'],
"COLLECTIBLE_METAL_ONE" => $row['COLLECTIBLE_METAL_ONE'],
"COLLECTIBLE_METAL_TWO" => $row['COLLECTIBLE_METAL_TWO']
);
}
//echo the json
echo json_encode($data);
}
mysqli_close($con);
Кстати: не используйте W3schools, если вы действительно хотите учиться и делать это правильно. Многие вещи там устарели и вводят в заблуждение.