2013-06-13 2 views
0

У меня есть несколько записи (ы) в PHPMYADMIN и теперь я пытаюсь принести эти записи (ы) с помощью PHP-код, но всегда я получаю Array() 1 всякий раз, когда я запускаю свой php-скрипт, используя Localhost, однако у меня есть 5 строк в таблице.Как Fetch Несколько строк из PhpMyAdmin с помощью кода PHP

Пожалуйста, смотрите ниже код:

<?php 
$objConnect = mysql_connect("localhost","root",""); 
$objDB = mysql_select_db("mydatabase"); 

$strMemberID = $_POST["sMemberID"]; 
$strSQL = "SELECT * FROM order_details WHERE 
MemberID = '".mysql_real_escape_string($strMemberID)."' ORDER BY OrderID DESC "; 

$objQuery = mysql_query($strSQL); 


while($obResult = mysql_fetch_assoc($objQuery)) 
{ 
$arr = array(); 
$arr["OrderID"] = $obResult["OrderID"]; 
$arr["ItemDetails"] = $obResult["ItemDetails"]; 
} 
mysql_close($objConnect); 
echo print_r($arr); 
?> 
+2

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **) (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). –

+2

ваш код ___vulnerable для sql injection___ вам нужно избежать всего запроса, и вы уверены, что установлен sMemberId? –

+2

Также не эхо 'print_r'. –

ответ

0

изменить свой код в то время как цикл.

объявить $ arr вне цикла. объявление цикла внутри цикла очистит его до инициализации. вот почему вы получаете одну строку в каждом прогоне.

$arr = array(); 
while($obResult = mysql_fetch_assoc($objQuery)) 
{ 
$arr["OrderID"] = $obResult["OrderID"]; 
$arr["ItemDetails"] = $obResult["ItemDetails"]; 
} 

Also, to view array elements use echo json_encode($arr) or var_dump($arr) or print_r($arr); 

это, безусловно, работать для вас

+0

всякий раз, когда я объявляю массив вне цикла, получение: Array() 1 –

0

Это не непосредственно ответ на свой вопрос, но в то время как вы на него пытаются использовать PDO и подготовленные заявления

$strMemberID = $_POST["sMemberID"]; 
$strSQL = 'SELECT * FROM order_details WHERE MemberID = ? ORDER BY OrderID DESC'; 
try { 
    $db = new PDO('mysql:host=localhost;dbname=dbname;charset=UTF8', 'user', 'password'); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    $query = $db->prepare($strSQL); 
    $query->execute(array($strMemberID)); 
    $result = $query->fetchAll(PDO::FETCH_ASSOC); 
} catch (PDOException $e) { 
    echo 'Exeption: ' .$e->getMessage(); 
    $result = false; 
} 
$query = null; 
$db = null; 
var_dump($result); 

Вы можете, как это ,

+0

вам нужно установить PDO :: ATTR_EMULATE_PREPARES, false для причины см. Http://stackoverflow.com/questions/134099/are-pdo-prepared-statements- достаточный для предотвращения-sql-injection/12202218 # 12202218 –

+0

@ NullPoiиteya Пропустил его для краткости. Но в любом случае спасибо, хорошая точка. Обновлен ответ, чтобы включить его. – peterm

+0

@ChulbulPandey Это сработало для вас? – peterm

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