ramone_johnny Posted April 13, 2013 Share Posted April 13, 2013 Can someone tell me if this is right? $r2=query_wrapper("SELECT * FROM tblphotos WHERE tblph_shareID = ?",$rstDBEdit["share_ID"]). " ORDER BY tblph_shareID DESC LIMIT 1"; I'm getting the following error.... Warning: mysql_fetch_assoc() expects parameter 1 to be resource, string given in (line 35) ....which is if($rstDBEdit2=mysql_fetch_assoc($r2)) Here's the code in it's entirity $r2=query_wrapper("SELECT * FROM tblphotos WHERE tblph_shareID = ?",$rstDBEdit["share_ID"]). " ORDER BY tblph_shareID DESC LIMIT 1"; if($rstDBEdit2=mysql_fetch_assoc($r2)) { $fname = $rstDBEdit2["tblph_filename"]; $id = $rstDBEdit2["tblph_shareID"]; $image = $blogpath.$rstDBEdit["tblph_ID"]."/small_".$fname; $virtualPath = $shareurl.$rstDBEdit["tblph_ID"]."/small_".$fname; Link to comment https://forums.phpfreaks.com/topic/276893-select-top-equivalent-in-mysql/ Share on other sites More sharing options...
requinix Posted April 13, 2013 Share Posted April 13, 2013 Putting aside the fact that you put the ORDER BY stuff in the wrong place (you're concatenating it with the share_ID, not with the query), apparently query_wrapper() returned a string. Why is that? What does the function do? What's the code? [edit] And to answer the question in the title and not in your post... not even close to what's in your post... T-SQL's TOP N is equivalent to MySQL's LIMIT N. As it seems you've found out. Link to comment https://forums.phpfreaks.com/topic/276893-select-top-equivalent-in-mysql/#findComment-1424527 Share on other sites More sharing options...
ramone_johnny Posted April 13, 2013 Author Share Posted April 13, 2013 Would you mind helping me get this query right? My background is ASP/MSSQL. This is what I currently have. $share_ID = $rstDBEdit["share_ID"];$r2=query_wrapper("SELECT * FROM tblphotos WHERE tblph_shareID = ", $share_ID. " ORDER BY tblph_ordering ASC LIMIT 1"); Link to comment https://forums.phpfreaks.com/topic/276893-select-top-equivalent-in-mysql/#findComment-1424529 Share on other sites More sharing options...
ramone_johnny Posted April 13, 2013 Author Share Posted April 13, 2013 By the way, I was asking about TOP because I'm trying to conver this MSSQL query. strSQL2 = "SELECT TOP 1 * FROM tblphotos WHERE tblph_shareID = " & SQLNumber(rstDBEdit("share_ID")) & " ORDER BY tblph_ordering ASC" Link to comment https://forums.phpfreaks.com/topic/276893-select-top-equivalent-in-mysql/#findComment-1424530 Share on other sites More sharing options...
requinix Posted April 13, 2013 Share Posted April 13, 2013 Yeah, you've got the right overall query, but look at that function call more carefully. query_wrapper("SELECT * FROM tblphotos WHERE tblph_shareID = ", $share_ID. " ORDER BY tblph_ordering ASC LIMIT 1")You're passing two arguments. The first one is SELECT * FROM tblphotos WHERE tblph_shareID = and the second one (if $share_ID=123) is 123 ORDER BY tblph_ordering ASC LIMIT 1. That's surely not how the function is supposed to work. However the function returns a string. That's odd. What does the function do and how is it supposed to work? Link to comment https://forums.phpfreaks.com/topic/276893-select-top-equivalent-in-mysql/#findComment-1424534 Share on other sites More sharing options...
ramone_johnny Posted April 13, 2013 Author Share Posted April 13, 2013 Sorry, I'm working with someone elses code. I'm not sure what the function does. Link to comment https://forums.phpfreaks.com/topic/276893-select-top-equivalent-in-mysql/#findComment-1424538 Share on other sites More sharing options...
ramone_johnny Posted April 13, 2013 Author Share Posted April 13, 2013 Where do I put the order by????? $r2=query_wrapper("SELECT * FROM tblphotos ORDER BY tblph_shareID DESC LIMIT 1 WHERE tblph_shareID = ?", $share_ID); Link to comment https://forums.phpfreaks.com/topic/276893-select-top-equivalent-in-mysql/#findComment-1424539 Share on other sites More sharing options...
requinix Posted April 13, 2013 Share Posted April 13, 2013 You had the right order before, it just wasn't all together. SELECT * FROM tblphotos WHERE tblph_shareID = ? ORDER BY tblph_shareID DESC LIMIT 1If that doesn't work, please post the code for query_wrapper(). [edit] Third edited post in a row Your query is wordier than it needs to be: you're searching by the shareID so there's no point sorting by it. SELECT * FROM tblphotos WHERE tblph_shareID = ? LIMIT 1And if the tblph_shareID is unique in the table then you don't even need the LIMIT. Link to comment https://forums.phpfreaks.com/topic/276893-select-top-equivalent-in-mysql/#findComment-1424542 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.