I’m trying to query a MySQL database using an array but I’m having trouble!
I have a table called clients, I want to be able to select ‘name’ from all rows whose ‘sector’ column is equal to $sectorlink.
I then want to put all the names into an array so I can perform my next query: select all rows from another table whose ‘client’ column is equal to one of the names returned from the first query. I’m doing something wrong because it returns a fatal SQL error. I’m getting confused with all the variables!
$sectorlink and $connection are the only variables that are defined outside of this code
Any suggestions?
$query1 = "SELECT name FROM clients WHERE sector = '$sectorlink'";
$clientresult = mysql_query($query1, $connection) or trigger_error("SQL", E_USER_ERROR);
while($row = mysql_fetch_array($clientresult)){
foreach($row AS $key => $value){$temp[] = '"'.$value.'"';}
$thelist = implode(",",$temp);
$query = "SELECT count(*) FROM studies WHERE client IN ($row) ORDER BY (date) desc";
$result = mysql_query($query, $connection) or trigger_error("SQL", E_USER_ERROR);
}
The second query should use
$thelistnot$row, and it should be outside of thewhileloop. Theforeachloop is unnecessary when processing a single row. You can access the name in$rowwith a simple$row[0]. Something like this (untested):Caution: Please be aware that your code is highly vulnerable to SQL injection attacks. It’s fine for testing or internal development but if this code is going to be running the Fort Knox web site you’re going to want to fix it up quite a bit. Just an FYI. 🙂