close ad
 
Important WebAssist Announcement
open ad
View Menu

Technical Support Forums

Free, outstanding support from WebAssist and your colleagues

rating

MySQLi - multiple LIKE %colname% in recordset

Thread began 10/09/2015 2:02 am by georgina_barrett_187762 | Last modified 5/12/2017 8:37 am by Ray Borduin | 2776 views | 6 replies |

georgina_barrett_187762

MySQLi - multiple LIKE %colname% in recordset

I am converting a current recordset to MySQLi. I worked perfectly before..
$colname2_booking = "-1";
if (isset($_GET['S_Name'])) {
$colname2_booking = $_GET['S_Name'];
}
$colname3_booking = "-1";
if (isset($_GET['S_Tel'])) {
$colname3_booking = $_GET['S_Tel'];
}
$colname5_booking = "-1";
if (isset($_GET['S_Email'])) {
$colname5_booking = $_GET['S_Email'];
}
mysql_select_db($database_georgeconnect, $georgeconnect);
$query_booking = sprintf("SELECT carpark.*, contractcar.ContractID FROM carpark LEFT JOIN contractcar ON carpark.CarID=contractcar.ID WHERE Company='Ascars' AND carpark.name LIKE %s AND (carpark.tel LIKE %s OR carpark.mobile LIKE %s) AND carpark.email LIKE %s ORDER BY Date DESC", GetSQLValueString("%" . $colname2_booking . "%", "text"),GetSQLValueString("%" . $colname3_booking . "%", "text"),GetSQLValueString("%" . $colname3_booking . "%", "text"),GetSQLValueString("%" . $colname5_booking . "%", "text"));
$booking = mysql_query($query_booking, $georgeconnect) or die(mysql_error());
$row_booking = mysql_fetch_assoc($booking);
$totalRows_booking = mysql_num_rows($booking);

I have researched how you do LIKE %colname% with MySQLi and it works if there is just 1 search field but returns no results if I have multiple LIKE %colname%

$booking = new WA_MySQLi_RS("booking",$georgeconnect_i,0);
$booking->setQuery("SELECT carpark.*, contractcar.ContractID FROM carpark LEFT JOIN contractcar ON carpark.CarID=contractcar.ID WHERE Company='Ascars' AND carpark.email LIKE CONCAT('%%',?,'%%') AND carpark.name LIKE CONCAT('%%',?,'%%') AND Tel LIKE CONCAT('%%',?,'%%') ORDER BY Date DESC");
$booking->bindParam("s", "".$_GET['S_Email'] ."", "-1"); //colname1
$booking->bindParam("s", "".$_GET['S_Name'] ."", "-1"); //colname2
$booking->bindParam("s", "".$_GET['S_Tel'] ."", "-1"); //colname3
$booking->execute();

Sign in to reply to this post

Ray BorduinWebAssist

Try using:

$booking = new WA_MySQLi_RS("booking",$georgeconnect_i,0);
$booking->setQuery("SELECT carpark.*, contractcar.ContractID FROM carpark LEFT JOIN contractcar ON carpark.CarID=contractcar.ID WHERE Company='Ascars' AND carpark.email LIKE ? AND carpark.name LIKE ? AND Tel LIKE ? ORDER BY Date DESC");
$booking->bindParam("c", "".$_GET['S_Email'] ."", "-1"); //colname1
$booking->bindParam("c", "".$_GET['S_Name'] ."", "-1"); //colname2
$booking->bindParam("c", "".$_GET['S_Tel'] ."", "-1"); //colname3
$booking->execute();

Using "c" as the data type should automatically add the '%' at both ends.

Sign in to reply to this post
Did this help? Tips are appreciated...

georgina_barrett_187762

Thank you - I did try that as well but I still get no results. Using this method I do get results if I have a value in each of the 3 fields - even if there is only part of the field in the search - but if any one of them is empty in the url string I get no results.
For example
searchresults.php?S_Name=geo&S_Tel=1&S_Email=g&Search3=Search - this works but
searchresults.php?S_Name=geo&S_Tel=&S_Email=&Search3=Search - this doesn't work

I have even tried
$booking = new WA_MySQLi_RS("booking",$georgeconnect_i,0);
$booking->setQuery("SELECT carpark.*, contractcar.ContractID FROM carpark LEFT JOIN contractcar ON carpark.CarID=contractcar.ID WHERE Company='Ascars' AND carpark.email LIKE CONCAT('%%',?,'%%') AND carpark.name LIKE CONCAT('%%',?,'%%') AND Tel LIKE CONCAT('%%',?,'%%') ORDER BY Date DESC");
$booking->bindParam("c", "".$_GET['S_Email'] ."", "-1"); //colname1
$booking->bindParam("c", "".$_GET['S_Name'] ."", "-1"); //colname2
$booking->bindParam("c", "".$_GET['S_Tel'] ."", "-1"); //colname3
$booking->execute();

But if any one of the values is empty in the url string I get no results

Sign in to reply to this post

Ray BorduinWebAssist

Try replacing "-1" with "" in each of those lines... that is the value it uses when the parameter is blank.

Sign in to reply to this post
Did this help? Tips are appreciated...

georgina_barrett_187762

Yes, that did it thank you!

Sign in to reply to this post

georgina_barrett_187762

I am working on a different project using the method above however I have just realised that if a field is empty the search works but if there is a NULL value in any one of the fields I am searching on it doesn't show.

Sign in to reply to this post

Ray BorduinWebAssist

You could not allow null in that column and set the default to an empty string instead.

Another option is to complicate the SQL statement to account for it like:
$booking = new WA_MySQLi_RS("booking",$georgeconnect_i,0);
$booking->setQuery("SELECT carpark.*, contractcar.ContractID FROM carpark LEFT JOIN contractcar ON carpark.CarID=contractcar.ID WHERE Company='Ascars' AND (carpark.email LIKE ? OR (?='' AND carpark.email IS NULL)) ORDER BY Date DESC");
$booking->bindParam("c", "".$_GET['S_Email'] ."", "-1"); //colname1
$booking->bindParam("c", "".$_GET['S_Email'] ."", "-1"); //colname2
$booking->execute();

Sign in to reply to this post
Did this help? Tips are appreciated...

Build websites with a little help from your friends

Your friends over here at WebAssist! These Dreamweaver extensions will assist you in building unlimited, custom websites.

Build websites from already-built web applications

These out-of-the-box solutions provide you proven, tested applications that can be up and running now.  Build a store, a gallery, or a web-based email solution.

Want your website pre-built and hosted?

Close Windowclose

Rate your experience or provide feedback on this page

Account or customer service questions?
Please user our contact form.

Need technical support?
Please visit support to ask a question

Content

rating

Layout

rating

Ease of use

rating

security code refresh image

We do not respond to comments submitted from this page directly, but we do read and analyze any feedback and will use it to help make your experience better in the future.

Close Windowclose

We were unable to retrieve the attached file

Close Windowclose

Attach and remove files

add attachmentAdd attachment
Close Windowclose

Enter the URL you would like to link to in your post

Close Windowclose

This is how you use right click RTF editing

Enable right click RTF editing option allows you to add html markup into your tutorial such as images, bulleted lists, files and more...

-- click to close --

Uploading file...