Where and Order By clause not working - php
So this piece of code doesn't work and I can't figure it out.
$productid = (isset($_REQUEST['productId'])) ? $_REQUEST['productId'] : '';
$query = "SELECT * FROM products WHERE productId = '$productid' ORDER BY rand() limit 3";
Perhaps try:
$productid = (isset($_REQUEST['productId'])) ? $_REQUEST['productId'] : '';
if ($productid != ''){
$query = "SELECT * FROM products WHERE productId = '$productid' ORDER BY rand() limit 3";
} else {
$query = "SELECT * FROM products ORDER BY rand() limit 3";
}
This should return all products if the productId isn't coming over.
Related
update row value based on if else condition
In php Page once we click on "Submit" button , in database we are saving order id, its working fine.... Requirement : If payment is "Cash on delivery" , than i want to save order id in "awb_type : COD" row.... otherwise in "awb_type : PPD" row.... here is full code , track.php : https://pastebin.com/zLjpee7A , call.php : https://pastebin.com/4LkcxTYE But orders are updating twice in table - one row in PPD & one in COD Please let me know if you need more information.... Update 2 : Now i tried below code, but whatever is payment_type , its saving only in awb_type column : PPD rows.... $sqlc = "select * from ecomexpress_awb WHERE status='unused' AND awb_type='COD' limit 1"; $resultc = $db_handle->runSelectQuery($sqlc); $sqld = "select * from ecomexpress_awb WHERE status='unused' AND awb_type='PPD' limit 1"; $resultd = $db_handle->runSelectQuery($sqld); $payment_type=''; $sqlg="SELECT * FROM do_order where payment_type='".$payment_type."'"; $resultg = $db_handle->runSelectQuery($sqlg); if($payment_type=="Cash on delivery") { $awb = $resultc[0]['awb']; $sqle = "update ecomexpress_awb set orderid = '".$order_id."',status='used' WHERE awb ='".$awb."' limit 1"; $resulte = $db_handle->runSelectQuery($sqle); } else { $awba = $resultd[0]['awb']; $sqlf = "update ecomexpress_awb set orderid = '".$order_id."',status='used' WHERE awb ='".$awba."' limit 1"; $resultf = $db_handle->runSelectQuery($sqlf); }
Before I did't binded the payment_type with order_id, below code worked for me : if(isset($_POST['order_id']) && $_POST['order_id']!='') { $order_id = $_POST['order_id']; $payment_type=$_POST['payment_type']; $sqlg="SELECT * FROM do_order where payment_type='".$payment_type."'"; $resultg = $db_handle->runSelectQuery($sqlg); if($payment_type=="Cash on delivery") { $sqlc = "select * from ecomexpress_awb WHERE status='unused' AND awb_type='COD' limit 1"; } else { $sqlc = "select * from ecomexpress_awb WHERE status='unused' AND awb_type='PPD' limit 1"; } $resultc = $db_handle->runSelectQuery($sqlc);
remove duplicate camma from mysql query
I am trying to fetch data with mulyiple value with Mysql IN operator but problem I am getting to much (,,,). Here is my query : $get_id = "select rel_blog from pages"; $resu = mysql_query($get_id); $p_id=""; $rel_b=""; $i = 1; while ($page_id = mysql_fetch_array($resu)){ $p_id.= $page_id['page_id']; $rel_b.= $page_id['rel_blog']; } $p_id."<br>"; echo $rel_b."<br>"; echo $getblog = "SELECT * FROM pages WHERE rel_blog IN ($rel_b) order by add_date desc limit 7"; Ouery output is Like this this is not proper form so please help me . SELECT * FROM pages WHERE rel_blog IN (,114,93,126108default,,,,default,,,,default,,default,,,default,,default,,,,,,,default,,default,,,default,,default,,,,,,,,,,,,,,,,,,,,,,,,,,123,145,144,148,81,107default,,,,,default,,,,,,145,138,118default,,,,,,default,,,,,,,default,,,,,,,default,,,,,,,default,,,118default,,,,default,,,,,,,,default,,,,,,,,,default,,default,,,,,,,,default,,,,,,,,,default,,default,,,,,default,,,,,,default,,,,,,,,,default,,,,,,,,default,,,,,default,,,,,,,123,122,125,113default,,,default,,,default,,124,145140default,,,,,,,,,,,,,default,,,,,,,,default,,,default,,,default,,,,default,,,,default,,default,,,,default,,,default,,,default,,default,,,,,,,default,,,,,,default,,,,default,,,,,,default,,,default,,,,137default,,,,,,,default,,,default,,,default,,,,,,default,,,,,,,,,,default,,,,,,,,82,83default,,,,,,default,,,,default,,,,default,,,default,,,default,,,,default,,,,default,,,,default,,,,default,,,default,,,,default,,,,default,,,default,,,default,,,,,,default,,,,,,default,,,,,default,,,default,,,,,default,,,,,default,,,,default,,,default,,default,,default,,default,,,,,,,default,,,,default,,default,,,,default,,,,default,,,,default,,,,,default,,,,default,,,,,default,,,,,,,default,,,,default,,,,,default,,,,,,default,,,,,,,default,,,,,,default,,,,,,,default,,default,,default,,,,,default,,,default,,,default,,,default,,,,default,114,default,,,,,,117,116default,,,,,default,,,,117,116default,,,,default,,,,default,,,,,default,,,,default,,,,,default,,,,default,,,default,,default,,,,,,default,,,,,,default,,,,,108default,,,,118,129,121,143,80,82,81,148,117,146,107,88,118,82,80,81,148,143,123,118,107,142,116,110,128,127,111,109,125,113,123,118,85,118,128,109,126,93,114,82,142,108,111,90,113,123,144,148,108,107,142,116,115,110,128,127,113,118,144,146,80,148,107,143,135,125,143,110,115,118,132,146,80,123,81,148,107,116,108,109,125,135,113,123,144,118,116,108,127,147,125,123,144,129,107,142,112,116,135,113,123,144,132,118,107,85,123,144,118,82,148,107,123,132,146,148,107,108,122,89,136,146,80,81,117,148,142,107,110,147,119,82,80,145,129,146,80,148,107,111,109,125,113,123,118,148,81,107,131,115,109,121,125,135,113,123,144,107,131,126,93,141,114,124,139,113,91,144,118,81,117,148,107,142,115,143,135,91,118,142,116,87,143,140,123,144,132,145,129,146,82,80,117,91,118,148,137,113,141,93,143,136,123,144,146,82,118,148,85,112,108,127,122,87,143,141,91,144,146,80,82,81,117,148,107,115,109,91,129,146,82,80,117,148,81,142,107,110,130,138,89,126,113,default,default,118,146,82,81,148,107,142,115,109,126,default,123,144,145,80,146,82,81,117,142,128,138,135,93,140,123,144,145,132,82,80,117,83,142,130,140,145,129,82,80,81,108,111,138,89,143,125,145,123,118,82,80,81,117,88,112,108,147,139,119,140,123,144,118,80,82,81,142,107,85,108,115,114,144,118,129,146,80,81,83,120,148,107,142,128,127,110,115,91,123,145,82,117,146,81,80,148,82,80,117,81,148,83,120,107,142,88,131,118,129,146,80,117,107,83,88,142,130,89,125,139,134,113,145,144,118,132,123,82,80,146,81,148,83,123,91,137,140,134,139,113,141,124,93140,150,150) order by add_date desc limit 7
Actually I can't figure out how you are getting even a single comma... This is how you can try it out. $get_id = "select rel_blog,page_id from pages"; $resu = mysql_query($get_id); $p_id=""; $rel_b=""; $i = 1; while ($page_id = mysql_fetch_array($resu)){ $p_id.= $page_id['page_id']; if($page_id['rel_blog']!=="" && $page_id['rel_blog']==="default") { $rel_b.= $page_id['rel_blog'] .","; } } $p_id."<br>"; $rel_b = substr($rel_b,0,-1); // get rid of the last comma echo $rel_b."<br>"; echo $getblog = "SELECT * FROM pages WHERE rel_blog IN ($rel_b) order by add_date desc limit 7";
You can do this before your query. $rel_b = preg_replace('/,+/', ',', trim($rel_b, ',')); This will remove repeated commas as well as commas from beginning and end of the string.
Try using implode(): $get_id = "select rel_blog from pages"; $resu = mysql_query($get_id); $p_id = array(); $rel_b = array(); $i = 1; while ($page_id = mysql_fetch_array($resu)){ $p_id[] = $page_id['page_id']; $rel_b[] = $page_id['rel_blog']; } $p_id = implode(',', $p_id); $rel_b = implode(',', rel_b); echo $getblog = "SELECT * FROM pages WHERE rel_blog IN ($rel_b) order by add_date desc limit 7";
sql statement select from DB limit didn't work
i have a question which is my limit statement didn't work i want the content select from database and limit the show content in 40 only but it didn't work here is my SQL statement with php code $chatroomID=$_GET['chatroomID']; $userID = $_SESSION['id']; $sql="SELECT * FROM chatroom_chat WHERE chatroom_id ='$chatroomID'"; $result1 = mysqli_query($connection, $sql) or die(mysqli_error($connection)); while ($row = mysqli_fetch_array($result1)) { $chat = $row['chat_id']; $sql3 ="SELECT * FROM ( SELECT * FROM chat WHERE id = '$chat' ORDER BY id DESC LIMIT 0,40 ) sub ORDER BY id ASC "; $getChatData = mysqli_query($connection,$sql3) or die(mysqli_error($connection)); /*here have statement to get username*/ while($row3 = mysqli_fetch_array($getChatData)) { echo "<div>all content</div>"; } } does my code have any syntax error? i no sure why it didn't work
SELECT * FROM ( SELECT * FROM chat WHERE id = '$chat' ORDER BY id DESC LIMIT 40 ) sub ORDER BY id ASC
PHP/MySQL using ORDER BY with a LIMIT
I created a pagination by roughly following this link: http://www.awcore.com/dev/1/3/Create-Awesome-PHPMYSQL-Pagination_en#toggle quite cool. Although I have an issue with my query. It works fine like this: require 'includes/function.php'; $page = (int) (!isset($_GET["page"]) ? 1 : $_GET["page"]); $limit = 8; $startpoint = ($page * $limit) - $limit; $statement = "cars WHERE deleted = 'no'"; $query = mysql_query("SELECT * FROM {$statement} LIMIT {$startpoint}, {$limit} "); while ($row = mysql_fetch_assoc($query)) { However when I try to add an ORDER BY to this, like so: require 'includes/function.php'; $page = (int) (!isset($_GET["page"]) ? 1 : $_GET["page"]); $limit = 8; $startpoint = ($page * $limit) - $limit; $statement = "cars WHERE deleted = 'no'"; $query = mysql_query("SELECT * FROM {$statement} LIMIT {$startpoint}, {$limit} ORDER BY model DESC"); while ($row = mysql_fetch_assoc($query)) { or just change the statement like this: $statement = "rcr_cars WHERE deleted = 'no' ORDER BY model DESC"; I get this error: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in filepath/myfile.php on line 79. Line 79 is this line: while ($row = mysql_fetch_assoc($query)) { Can anyone tell me how I am not using the ORDER BY correctly, its got me puzzled. :/
Try the query as below $query = mysql_query("SELECT * FROM {$statement} ORDER BY model DESC LIMIT {$startpoint}, {$limit} "); Where you have gone wrong is LIMIT should come after ORDER BY. Read more
Change the query: $query = mysql_query("SELECT * FROM {$statement} ORDER BY model DESC LIMIT {$startpoint}, {$limit}") ;
$query = mysql_query("SELECT * FROM {$statement} ORDER BY model DESC LIMIT {$startpoint}, {$limit} ");
MySQL: Combining two repetitive queries to make WHERE clause dynamic
How can I combine these two queries into one so I don't have to repeat the same lines again and again? if(empty($cat_id)) { $sql = " SELECT * FROM root_category_contacts ORDER by cat_order ASC "; $items_category = $connection->fetch_all($sql); } else { $sql = " SELECT * FROM root_category_contacts WHERE root_category_contacts.cat_id != ? ORDER by cat_order ASC "; $items_category = $connection->fetch_all($sql,array($cat_id)); } I don't need WHERE clause when I don't have the cat_id. Is it feasible?
Test if ? is null or equals cat_id. Something like this: Edit based on xdazz's comment. And assuming that cat_id > 0 $sql = " SELECT * FROM root_category_contacts WHERE root_category_contacts.cat_id != ? ORDER by cat_order ASC" if(empty($cat_id)) { $cat_id = 0; } $items_category = $connection->fetch_all($sql,array($cat_id));
if(empty($cat_id)) $where = ""; else $where = "WHERE root_category_contacts.cat_id != '$cat_id'" $sql = " SELECT * FROM root_category_contacts $where ORDER by cat_order ASC "; $items_category = $connection->fetch_all($sql);