Havent read the whole thread, just the start of the first post and i noticed this error in your script, you need to add ". and ." around $id. The error you do is telling the select to look for the row where id is the TEXT "$id" and not the value of the variable $id.
Change this:
$pub = @mysql_query(
"SELECT id, pubname, pubdesc, pubno, pubdate, authorid, formatid, orgid, pages, cost FROM pub WHERE id='$id'");
to
$pub = @mysql_query(
"SELECT id, pubname, pubdesc, pubno, pubdate, authorid, formatid, orgid, pages, cost FROM pub WHERE id='".$id."'");
#change these also
$aname = @mysql_query(
"SELECT * FROM author WHERE id='".$aid."'");
while ($row = mysql_fetch_array($aname)) {
echo "<h3>Search Results - Environmental Publications Database</h3>";
echo "<p><b>Title: $pubname</b><br><b>Author:</b> $row[name]<br><b>Description: </b>$pubdesc<br>";
}
$fname = @mysql_query(
"SELECT * FROM format WHERE id='".$fid."'");
while ($row = mysql_fetch_array($fname)) {
echo "<b>Format:</b> $row[name]<br><b>Date:</b>$pubdate<br>";
}
$oname = @mysql_query(
"SELECT * FROM org WHERE id='".$oid."'");
while ($row = mysql_fetch_array($oname)) {
echo "<b>Available from:</b> $row[name]<br><b>Cost:</b>$cost<br><b>Publication Number:</b>$pubno<br><b>Pages:</b>$pages<br>";
}
$cname = @mysql_query(
"SELECT * FROM category WHERE id='".$cid."'");
while ($row = mysql_fetch_array($cname)) {
echo "<b>Sector:</b> $row[name]<br>";
}
Or you can use sprintf like this (replace %d with %s if you want text instead of a number):
$query=sprintf("SELECT id, pubname, pubdesc, pubno, pubdate, authorid, formatid, orgid, pages, cost FROM pub WHERE id='%d'",$id);
$pub = @mysql_query($query);
The good thing about storing the query in its own variable is that you can echo it afterwards to debugging. Ex
$id=1;
$query=sprintf("SELECT id, pubname, pubdesc, pubno, pubdate, authorid, formatid, orgid, pages, cost FROM pub WHERE id='%d'",$id);
echo $query;
#prints SELECT id, pubname, pubdesc, pubno, pubdate, authorid, formatid, orgid, pages, cost FROM pub WHERE id='1'
$query="SELECT id, pubname, pubdesc, pubno, pubdate, authorid, formatid, orgid, pages, cost FROM pub WHERE id='$id'";
echo $query;
#prints SELECT id, pubname, pubdesc, pubno, pubdate, authorid, formatid, orgid, pages, cost FROM pub WHERE id='$id'
$query="SELECT id, pubname, pubdesc, pubno, pubdate, authorid, formatid, orgid, pages, cost FROM pub WHERE id='".$id."'";
echo $query;
#prints SELECT id, pubname, pubdesc, pubno, pubdate, authorid, formatid, orgid, pages, cost FROM pub WHERE id='1'