2015-04-27 4 views
0

Я хочу выделить все строки с именем $ name, но только показывает первую строку. Моя таблица как этотВыбрать и отобразить из таблицы MySQL с помощью php

id 
name 
password 
email 

Код:

$result = mysql_fetch_assoc(mysql_query("SELECT * FROM data WHERE username ='$name'")); 

print_r($result); 

Это не работает, он показывает только первую строку.

+1

MySQL является устаревшим, вы должны смотреть в MySQLi или PDO. – Epodax

+0

сделал и проверил, что есть более одной записи для этого имени пользователя, которое вы ввели –

+0

да сэр, теперь он исправлен $ query = mysql_query ("SELECT * FROM data WHERE username = '$ name'"); $ finalRes = array(); while ($ result = mysql_fetch_assoc ($ query)) { $ finalRes [] = $ result; } print_r ($ finalRes); –

ответ

0

Вы должны искать ошибки:

<?php 

$result = mysql_query("SELECT * FROM data WHERE username = '$name'"); 
if (!$result) { 
    var_export(mysql_error()); 
} 
$data = []; 
while ($row = mysql_fetch_assoc($result)) { 
    $data[] = $row; 
} 
var_export($data); 

и не забывайте про SQL-инъекции ...

PDO:

<?php 

try { 
    $dbh = new PDO('mysql:dbname=test;host=127.0.0.1', 'root'); 
} catch (PDOException $e) { 
    echo 'Connection failed: '.$e->getMessage(); 
} 
$name = 'yourName'; 
$sth = $dbh->prepare('SELECT * FROM data WHERE username = :name'); 
$sth->bindParam(':name', $name, PDO::PARAM_STR); 
if (!$sth->execute()) { 
    throw new Exception($sth->errorInfo()); 
} 
$result = $sth->fetchAll(PDO::FETCH_ASSOC); 
var_export($result); 
+0

ищет ошибки, предотвращает инъекции sql? –

+0

1) '" SELECT * FROM data WHERE username = '$ name' "' - это дыра. Напишите это - это плохая практика ... но проблема не в этом ... 2) Я полагаю: если ошибка возникает, она должна быть обработана ... 'var_export (mysql_error());' –

+0

ok, я буду больше смотреть на то, как для предотвращения внедрения sql, теперь просто поместите var_export (mysql_error()); после каждого запроса. –

1

Лучше использовать таким образом

$query= mysql_query("SELECT * FROM data WHERE username ='$name'"); 
$finalRes = array(); 
while($result = mysql_fetch_assoc($query)) 
{ 
    $finalRes[] = $result; 
} 
print_r($finalRes); 
+0

спасибо, сэр, он работал :) –

+1

Если он решил вашу проблему, тогда, пожалуйста, примите ответ. – MrUpsidown

0

Попробуйте как этот

$sql = "select * from data where username='$username'"; 
    $res = mysql_query($sql); 
    while ($row = mysql_fetch_array($res)) 
    { 
    print_r($row); 
    } 

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

+0

все еще показывает мне только первую строку // Array ([0] => 9 [id] => 9 [1] => anis [имя пользователя] => anis [2] => test [email] => test [3 ] => test [password] => test) –

Смежные вопросы