@twe1n

Вывод данных из БД. Что не так?

Есть 2 таблицы users и invoices. Вывожу из них данные и в месте где выводятся данные из таблицы users все нормально, а там где из таблицы invoices выводятся данные из таблиц invoices и users, а нужно что бы выводились только из таблицы invoices.
Код:
<?php	
	$db_host = 'localhost';
    $db_name = 'bill';
    $db_username = 'root';
    #$db_password = 'admin09876';
	 $connect_to_db = mysql_connect($db_host, $db_username, $db_password)
    or die("Could not connect: " . mysql_error());
	mysql_select_db($db_name, $connect_to_db)
    or die("Could not select DB: " . mysql_error());
	$qr_result = mysql_query('SELECT * FROM users, invoices WHERE email="'.mysql_real_escape_string($_SESSION['email']).'"')
    or die(mysql_error());
					while($data = mysql_fetch_array($qr_result)){ 
						echo '<tr>';
						echo '<li>№' . $data['id'] .'</li>';
						echo '<li>' . $data['first_name'] . ' ', $data['last_name'] . '</li>';
						echo '<li>' .$data['number'].'</li>';
						echo '<li>' . $data['email'] .'</li>';
						echo '<li>' . $data['balance'] .'$</li>';
						echo '<li>' . $data['service'] .'</li>';
						 echo '</tr>';
  
  ?>
						</ul>
					</div>
				</div><!--content-->
				<div class="password">
					<span>Password</span>
					<a href="#">Change Password</a>
				</div><!--password-->
			</div>

			<div role="tabpanel" class="tab-pane animated bounceInLeft" id="payments">
				<h5>Payments</h5>
				<div class="content">
					<div>
						<span><b>Account Balance</b></span>
					</div>
					<div class="last">
						<a href="#dialog" name="modal">Cash In</a>
					</div>
				</div><!--content-->
	
				<div class="payment-history">
					<div>
						<h6>Payment History</h6>
						<ul>
		            <?php	
						echo '<tr>';
						echo '<li>№' . $data['user_id'] .'</li>';
						echo '<li>' .$data['invoice_id'].'</li>';
						echo '<li>' . $data['invoice_ammount'] .'</li>';
						 echo '</tr>';
  }
  mysql_close($connect_to_db);
  ?>

Скрин:
5b7975c79c7be699548213.png
все что до красной линии - данные из таблицы invoices, а после из users.
  • Вопрос задан
  • 704 просмотра
Решения вопроса 1
@twe1n Автор вопроса
Поправил код и все заработало как надо:
<?php	
	$db_host = 'localhost';
    $db_name = 'bill';
    $db_username = 'root';
    #$db_password = 'admin09876';
	 $connect_to_db = mysql_connect($db_host, $db_username, $db_password)
    or die("Could not connect: " . mysql_error());
	mysql_select_db($db_name, $connect_to_db)
    or die("Could not select DB: " . mysql_error());
	$qr_result = mysql_query('SELECT * FROM users, invoices WHERE email="'.mysql_real_escape_string($_SESSION['email']).'"')
    or die(mysql_error());
					$data = mysql_fetch_array($qr_result);
						echo '<tr>';
						echo '<li>№' . $data['id'] .'</li>';
						echo '<li>' . $data['first_name'] . ' ', $data['last_name'] . '</li>';
						echo '<li>' .$data['number'].'</li>';
						echo '<li>' . $data['email'] .'</li>';
						echo '<li>' . $data['balance'] .'$</li>';
						echo '<li>' . $data['service'] .'</li>';
						 echo '</tr>';

		               
						echo '<tr>';
						echo '<li>№' .$data['invoice_id'].'</li>';
						echo '<li>' . $data['invoice_ammount'] .'$</li>';
						 echo '</tr>';
 while($data = mysql_fetch_array($qr_result)){
  }
  mysql_close($connect_to_db);
  ?>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Если я правильно расшифровал вопрос, то:
$qr_result = mysql_query('SELECT * FROM users, invoices WHERE email="'.$_SESSION['email'].'"')

заменить на:
$qr_result = mysql_query('SELECT * FROM invoices WHERE email="'.mysql_real_escape_string($_SESSION['email']).'"')


Впрочем, если в других файлах все запросы делаются так-же (без использования mysql_real_escape_string()), то вас всё равно взломают, на раз-два-три. Хотя нет, вру, -два-три не понадобится.
Этот вид взлома называется SQL-injection, советую почитать.
Ответ написан
@ogr66
У вас выводятся в цикле результаты ОДНОГО запроса из 2х таблиц.
Удалите из примера все html теги - они неправильные. выводите только данные и, возможно, сами увидите свои ошибки.
Ответ написан
Комментировать
slo_nik
@slo_nik Куратор тега PHP
Добрый день.
Опишите, что именно хранится в таблицах и их структуру.
Возможно Вам понадобиться оператор join.
Ответ написан
Комментировать
@Slawka_SoD
Что написали в вывод то и выводится, в одном случае выводятся данные в цикла while в другом вы выводите Payment History в конце кода.

Прежде чем мешать php и html сделайте макет страницы в html, прогоните через валидатор и потом вставляйте динамические данные через переменные в ваш макет страницы.

mysql_connect устарел, лучше используйте PDO
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы