2013-08-31 8 views
0

Таким образом у меня есть это до сих пор ..PHP Получить значение из базы данных

if(isset($_POST['Decrypt'])) 
{ 
    $dbinary = strtoupper($_POST['user2']); 
    $sqlvalue = "SELECT `value` FROM `license` WHERE `binary` = '$dbinary'"; 
    $dvalue = mysql_query($sqlvalue) or die(mysql_error()); 
} 

У меня есть поле, где пользователь вводит двоичный код, который был зашифрован. (Зашифрованная часть работает). Предполагается получить значение из базы данных. Когда я когда-либо это делаю, вместо показа значения появляется «Идентификатор ресурса № 11».

+0

Это уязвимо для SQL-инъекции. Настоятельно рекомендуется переключиться с теперь устаревшего 'mysql _ *()' API на более современный, например PDO, поддерживающий параметризованные запросы. [Этот учебник поможет вам начать работу] (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers) –

+0

Я планирую сделать это в ближайшее время, но пока я использую его только по личным вопросам, и он находится на моем личном сервере , Он не доступен никому, кроме меня, и никто не знает об этом. –

ответ

2

Нет ничего плохого в цитировании. На самом деле все выглядит правильно.

Дело в том, что прямо сейчас $ dvalue - это всего лишь ресурс базы данных SQL. Вы должны извлечь содержимое с еще одной строкой:

$dvalue = mysql_fetch_array($dvalue); 

В будущем, вы можете начать использовать PDO или MySQLi вместо функций MySQL, потому что те устаревшим 5.5.0. Преимущество PDO и MySQLi заключается в том, что они предлагают защиту от SQL Injection, а именно, когда пользователи запускают собственный код SQL, вводя что-то вроде x'; DROP TABLE members; --.

+1

... после чего у вас будет массив, поэтому обязательно получите доступ к столбцу, который вам нужен, в качестве ключа массива '$ dvalue ['value']', в противном случае вы получите 'Array' в качестве вывода. –

+0

Хорошо, Майкл, ты был прав, «массив» появился. Однако, когда я ввел '$ dvalue ['значение']', как вы сказали, я получил эту ошибку Ошибка анализа: синтаксическая ошибка, неожиданное '}' в /home/u923860750/public_html/cpanel/cpanel.php в строке 31 –

+0

О, подождите, это потому, что я не поставил a; после линии. Но когда я помещаю точку с запятой, снова появляется «Array» –

-1

Прочтите эту страницу: W3 Schools page on MySQL select useage. В основном $ dvalue - это идентификатор набора результатов, и вам нужно будет вывести массив из базы данных на другом шаге. Кроме того, функции mysql_ * устарели. Затем найдите и используйте функции mysqli_ *.

while($row = mysqli_fetch_array($dvalue)) 
{ 
    echo $row['value']; 
    echo "<br>"; 
} 
+0

Просьба ссылаться на официальную документацию PHP вместо w3schools, которая, как считается, имеет очень низкое качество (полная SQL-инъекций и т. Д.), –

0

Не используйте функции mysql_. Это deprecated. Используйте вместо этого PDO или MySQLi.

Как говорится, вы выполняете запрос и не получаете никаких результатов. Вам нужно будет вызвать функцию типа mysqli_fetch_array, чтобы получить данные из идентификатора ресурса, который будет возвращен mysqli_query.

Мой совет - вернуться к учебникам и документации и повторить попытку с помощью одного из этих дополнительных расширений. Удачи.

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