2013-12-12 7 views
0

У меня проблема с преобразованием результатов запроса mysqli в переменные, которые я могу заполнить текстовыми областями. Я пытаюсь найти примеры этого по всему Интернету, и я не могу найти что-то, что разрешает мою проблему.Устранение неполадок mysqli_fetch_assoc()

В моем последнем проекте в этих строках использовался mysql, а не mysqli, так что это не совсем то же самое, плюс мой проект достаточно разнообразен, чтобы не допускать копирования-вставки кода.

Я пытаюсь подключиться к базе данных, извлекать информацию, используемую в элементе post в качестве элемента поиска, и заполнять текстовые поля результатами. Я еще не получил возможность изменять содержимое текстовых областей, так как мне не удалось выяснить, как вернуть значение, которое я могу добавить в переменную/массив.

Я не очень опытен с PHP, поэтому я не знаю каждого из них и из языка. Любая помощь будет высоко оценена.

код приведен ниже:

<html> 
<head></head> 

<script language="javascript" type="text/javascript"> 
function populateForm(jack) { 
    document.getElementById('id_cubenum').value = jack; 
    document.getElementById('id_firstname').value = resultArray[1]; 
    document.getElementById('id_lastname').value = resultArray[2]; 
    document.getElementById('id_username').value = resultArray[3]; 
} 
</script> 

<body> 
<form> 
ID: <input type="text" name="elem_cubenum" id="id_cubenum" maxlength="3" size="25" disabled><br> 
<br> 
First Name: <br> 
<input type="text" name="elem_firstname" id="id_firstname"><br> 
Last Name: <br> 
<input type="text" name="elem_lastname" id="id_lastname"><br> 
Username: <br> 
<input type="text" name="elem_username" id="id_username" maxlength="8" size="8"> <br><br> 
<hr> 
Department:<br> 
    <select name="elem_dept" id="id_dept"> 
     <option value="a">A</option> 
     <option value="d">D</option> 
     <option value="r">R</option> 
     <option value="m">M</option> 
     <option value="o">O</option> 
    </select><br><br> 
<hr> 
Machine Name: <br> 
<input type="text" name="elem_machname" id="id_machname" maxlength="16"><br> 
Machine Inv#: <br> 
<input type="text" name="elem_machnum" id="id_machnum" maxlength="5"><br> 
Monitor Inv#: <br> 
<input type="text" name="elem_monnum" id="id_monnum" maxlength="5"><br><br> 
<hr> 
Operating System:<br> 
<select name="elem_os" id="id_os"> 
    <option value="winxp">Windows XP</option> 
    <option value="win7">Windows 7</option> 
    <option value="other">Other</option> 
</select> 
<br><hr> 
</form> 

<?php 
$dbhost = "xxxxxxxxxxx"; 
$dbname = "xxxxxxxxxxx"; 
$dbuser = "xxxxxxxxxxx"; 
$dbpass = "xxxxxxxxxxx"; 
$p_getJack = $_POST['elem_seatNum']; 

$conn = mysqli_connect($dbhost,$dbuser,$dbpass,$dbnme); 
$query = "SELECT * FROM locations WHERE locateid = '$p_getJack'"; 

echo '<img src="check.jpg" alt="Database Connection Made">' . 'Connection to the server was successfully made. <br>Jack Number: ' . $p_getJack . '<br><hr><br>'; 

if (mysqli_connect_errno()) { 
    echo "Failed to connect! " . mysqli_connect_error(); 
} 

$result = mysqli_query($conn, $query); 
$row = mysqli_fetch_assoc($result); 
printf("The results of %u and %s are listed.",$row["firstname"],$row["username"]); 

mysqli_close($conn); 
?> 
</body> 
</html> 

Это результат:

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /home/a7060806/public_html/form.php on line 66 

Любые идеи о том, что я делаю неправильно здесь ...? Я знаю, что информация о подключении верна, потому что она скопирована с предыдущей страницы, и она отлично работает.

+0

Что не работает? Что вы видите, если вы делаете var_dump ($ row)? – Dave

+0

Разница между mysql_ и mysqli_ в этом отношении очень мала! – Strawberry

+0

Я редактировал в результатах того, что страница бросает на меня, когда компилируется страница. –

ответ

3
$dbname = "xxxxxxxxxxx"; 
$conn = mysqli_connect($dbhost,$dbuser,$dbpass,$dbnme); 

Обратите внимание, как вы определили $dbname в качестве имени базы данных и вы использовали $dbnme вместо

Кроме того, ваш код уязвим для SQL Injection пожалуйста, убедитесь, что вы VALIDATE и дезинфицировать ввод данных пользователем. Посетите вопрос here о том, как предотвратить SQL-инъекцию или руководство по предотвращению SQL-инъекции here

+0

приятный улов !! : D –

+0

Просто бит nit-picking: использование подготовленных операторов - это нечто иное, чем проверка и дезинфекция ввода пользователя. –

+0

Это санировка, не так ли? @MarcelKorpel – Ali

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