Почему php не распознает этот запрос?

Я пытаюсь запустить простой запрос mysql в php, но он не запускается. В нем говорится, что B.ISBN и т. д. - это неопределенные индексы. Почему это ? Разве php не распознает AS (что-то) mysql? Я отредактировал, чтобы добавить весь код файла, извините за недоразумение

<?php include 'dbconfig.php';  $Title = $_GET['Title'];?>
<?php header('Content-Type: text/html; charset=utf-8');?>

<!DOCTYPE HTML PUCLIC "-//W3C//DTDHTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<link rel = "stylesheet" type = "text/css" href = "mytable.css">
<link rel = "stylesheet" type = "text/css" href = "styles.css">
</HEAD>
<TABLE class = "minimalistBlack">
        <thead>
        <tr>
        <th> ISBN </th>
        <th> Title </th>
        <th> Number of Pages </th>
        <th> Publisher Name </th>
        <th> Copy Number </th>
        <th> Shelf </th>
        </tr>
        </thead>
        <?php 
            $conn= mysqli_connect("localhost","root","","library");
            mysqli_set_charset($conn, "utf8");

            if ($conn -> connect_error){
                die("Conenction failed:". $conn->connect_error);
            }
            $sql = "SELECT B.ISBN,B.Title,B.numpages,B.pubName,C.copyNr,C.shelf
            FROM book AS B
            INNER JOIN copies as C
               ON B.ISBN=C.ISBN";

            $result = $conn->query($sql);
            if ($result->num_rows>0){
                while($row= $result->fetch_assoc()){
                    echo "<tr>";
                    echo "<td>".$row['B.ISBN']."</td>";
                    echo "<td>".$row['B.Title']."</td>";
                    echo "<td>".$row['B.numpages']."</td>";    
                    echo "<td>".$row['B.pubName']."</td>"; 
                    echo "<td>".$row['C.copyNr']."</td>"; 
                    echo "<td>".$row['C.shelf']."</td>";                   
                }
                echo "</TABLE>";
            }
            else { echo "0 result"; }
            $conn->close();
         ?>
    </TABLE>
</HTML>

ваш sql-запрос выдает результат в phpmyadmin?

Mohit Kumar 25.05.2019 19:41

Переменная $Title не определена. (Запрос также не защищен от SQL-инъекций)

odan 25.05.2019 19:42

@MohitKumar да

user7475343 25.05.2019 19:43

@odan Я использовал оператор get в начале файла, поэтому он определен

user7475343 25.05.2019 19:44

Попробуйте оставить псевдонимы таблиц в echos. echo "<td>" . $row['ISBN'] . "</td>"; вместо echo "<td>" . $row['B.ISBN'] . "</td>"; и т. д....

sticky bit 25.05.2019 19:44

@stickybit комментарий года!

user7475343 25.05.2019 20:00

@thriteenchess, какой из этих ответов решил вашу проблему. Пожалуйста, примите этот ответ.

Pie 25.05.2019 20:07

@Pie на самом деле комментарий липкого бита решил это с помощью кода из предоставленного ответа, который почти одинаков

user7475343 25.05.2019 20:13
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
8
64
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Используйте JOIN:

SELECT B.ISBN,B.Title,B.numpages,B.pubName,C.copyNr,C.shelf
FROM book AS B
INNER JOIN copies as C
   ON B.ISBN=C.ISBN
WHERE B.Title='$Title'";

а как же заголовок?

user7475343 25.05.2019 19:42

Отредактировано, но я нигде не вижу $Title определенного.

Anurag Srivastava 25.05.2019 19:43

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

user7475343 25.05.2019 19:48

Вы можете использовать эту номенклатуру для именования таблиц.

SELECT B.ISBN,B.Title,B.numpages,B.pubName FROM book B JOIN copies C WHERE B.ISBN=C.ISBN AND B.Title = '+$title; 

кажется, что это частично работает, однако я получаю эту ошибку: Примечание: попытка получить свойство 'num_rows' не-объекта в C:\wamp\www\search_query.php в строке 31

user7475343 25.05.2019 19:46

@thriteenchess Я лично рекомендую вам проверить запрос непосредственно на базе данных. Например, если вы используете phpmyadmin, попробуйте выполнить запрос вручную и отредактируйте его, пока он не заработает. После этого поместите тот же запрос в php-скрипт. Тем самым вы можете подтвердить, что запрос работает. Это дает вам эту ошибку, потому что $result не установлен (запрос неверен).

wasanga7 25.05.2019 19:52

запрос успешно выполнен в phpmyadmin

user7475343 25.05.2019 19:55

затем повторите запрос, сохраненный в $sql, чтобы увидеть, совпадает ли он с тем, который вы указали в phpmyadmin (возможно, это какая-то простая ошибка строки).

wasanga7 25.05.2019 19:56

Попробуйте следующий запрос:

SELECT B.ISBN, 
     B.Title, 
     B.numpages, 
     B.pubName, 
     C.copyNr, 
     C.shelf 
FROM book as B
LEFT JOIN copies AS C ON B.ISBN=C.ISBN
WHERE B.Title = '”.$Title.”’”

Вы также можете поменять левое соединение на внутреннее в зависимости от ситуации.

Lewis Blundell 25.05.2019 19:54
$sql = "SELECT B.ISBN,B.Title,B.numpages,B.pubName,C.copyNr,C.shelf
FROM book AS B
INNER JOIN copies as C
   ON B.ISBN=C.ISBN
WHERE B.Title = '".$Title."'";

Другие вопросы по теме