2013-11-20 4 views
-1

Итак, у меня есть форма, где пользователи могут заполнять информацию, при отправке формы информация загружается в мою базу данных SQL.mySQL ожидает, что параметр будет строкой

Существует страница «администратора», в которой отображаются все пользователи, которые находятся в моей таблице пользователей в моей БД.

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

Я не могу получить userId, который был выбран на экране.

Вот мой Администратор страница:

<html> 
<head> 
</head> 

<body> 

<?php 
//Step 1: Set the connection object equal to our database 
$conn = mysql_connect("localhost", "root", "") or die (mysql_error()); 

//Step 2: Set the databse you want to use 
mysql_select_db("assignment_3", $conn); 

//Step 3: Write sql that we want to run against the database 
$sql = "select id, firstName, lastName, emailAddress from usertable"; 

//Step 4: Run the sql statement against the database connection object we created $conn 

$result = mysql_query($sql, $conn) or die (mysql_error()); 

//STEP 5: Process the result set $result 

print "<table border='1'>"; 

print "<tr>"; 

print "<td>id</td>"; 

print "<td>firstName</td>"; 

print "<td>lastName</td>"; 

print "<td>emailAddress</td>"; 

while ($row = mysql_fetch_assoc($result)) { // this is getting each row that was returned 
$clickId = $row['id']; 
print "<tr>"; 

print "<td><a href ='showUser.php?userId=$clickId'> $clickId </a></td>"; 
print "<td>$row[firstName]</td>"; 
print "<td>$row[lastName]</td>"; 
print "<td>$row[emailAddress]</td>"; 

} 
print "</table>"; 
?> 



</body> 

</html> 

Если запустить эту страницу всех пользователей в БД загружаются и отображаются в виде таблицы, и все стали интерактивными ссылками их идентов при нажатии вас на showUser. php, которая отображает информацию для пользователя, который был выбран.

Здесь код для сайта showUser.php. Мне нужно захватить userId с помощью метода GET из URL-адреса, а затем запросить БД против этого идентификатора, чтобы показать информацию о пользователе.

Я действительно застрял и нуждаюсь в некоторой помощи.

<html> 
<head> 
</head> 

<body> 

<?php 

$id = filter_input(INPUT_GET, "userId"); 
//Make db connection 
$conn=mysql_connect("localhost","root","")or die(mysql_error()); 

//Step 2: select your db to use 
mysql_select_db("assignment_3",$conn); 

//Step 3: Write the sql that we want to run against the database 
$sql = mysql_query("select id, firstName, lastName, emailAddress, phoneNumber, underGradSchoolId, gradSchoolId, securityQuestionId from usertable where id='$id'"); 

$result = mysql_query($sql,$conn)or die(mysql_error()); 

print "<table border='1'>"; 

print "<tr>"; 

print "<td>id</td>"; 

print "<td>firstName</td>"; 

print "<td>lastName</td>"; 

print "<td>emailAddress</td>"; 

print "<tr>"; 

print "<td>id</td>"; 
print "<td>firstName</td>"; 
print "<td>lastName</td>"; 
print "<td>emailAddress</td>"; 
print "<td>phoneNumber</td>"; 
print "<td>underGradSchoolId</td>"; 
print "<td>gradSchoolId</td>"; 
print "<td>securityQuestionId</td>"; 

print "</table>"; 


?> 



</body> 

</html> 
+0

это должно быть 'print ''. $ Row [" firstName "]. ' '; 'и что для 3 строк – Stv

ответ

2

Вы используете mysql_query дважды:

$sql = mysql_query("select id, ..."); 
$result = mysql_query($sql,$conn)or die(mysql_error()); 

Какой должна быть (переименован так, как первый код, который вы публикуемую)

$result = mysql_query("select id, ...") or die(mysql_error()); 
$row = mysql_fetch_assoc($result); 

Теперь вы можете печатать значения как

print "<td>".$row['id']."</td>"; 

Также имейте в виду, что mysql_* функции officially deprecated и, следовательно, не должны использоваться в новом коде. Вместо этого вы можете использовать PDO или MySQLi. См. this answer on SO для получения дополнительной информации.

+0

Да, @kingkero прав, я не видел дважды использование mysql_query(). – Stv

0

Сначала убедитесь, что вы получили ожидаемое значение с помощью $ id. После шага 3 напечатайте $ sql и убедитесь, что он заканчивается на «где id = '{selected id}'"

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