summaryrefslogtreecommitdiffstats
path: root/includes
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2021-09-04 20:41:01 +0200
committerHarald Eilertsen <haraldei@anduin.net>2021-09-04 20:41:01 +0200
commit38bfa49958eca679166231f46e767f229d2561a6 (patch)
tree016db65decab002fa7be963949e9e9f711d2a7c4 /includes
parentf6d0f86a9e2a0ab3af398a6fe67d09c3e7779881 (diff)
downloadgigologadmin-38bfa49958eca679166231f46e767f229d2561a6.tar.gz
gigologadmin-38bfa49958eca679166231f46e767f229d2561a6.tar.bz2
gigologadmin-38bfa49958eca679166231f46e767f229d2561a6.zip
Fix so concert id is not overwritten by venue id.
We originally had a more specified query, but simplified it to: SELECT * FROM wpg_concerts LEFT JOIN wpg_venues ON ...; But since both the concerts table and the venues table has a column id, the concert id would be overwritten with the venue id. MySQL/MariaDB does not allow columns with the same name in multiple tables when using unqualified column names in the query. So we need to be more explicit again. I was hoping that the following would work: SELECT wpg_concerts.*, wpg_venues.* FROM .... ; I think MySQL/MariaDB would handle that, but now since php turns the result into an array, where each key must be unique, this again overwrites the concert id with the venue id. So thus a more verbose specification of the columns was necessary.
Diffstat (limited to 'includes')
-rw-r--r--includes/concert.php13
1 files changed, 8 insertions, 5 deletions
diff --git a/includes/concert.php b/includes/concert.php
index c0c13ee..a533679 100644
--- a/includes/concert.php
+++ b/includes/concert.php
@@ -30,6 +30,12 @@ if ( !class_exists('GiglogAdmin_Concert') ) {
public const STATUS_ALL_APPROVED = 4;
public const STATUS_REJECTED = 5;
+ private const BASE_QUERY =
+ 'SELECT wpg_concerts.*, wpg_venues.id as venue_id, wpg_venues.wpgvenue_name wpg_venues_wpgvenue_city '
+ . 'FROM wpg_concerts '
+ . 'LEFT JOIN wpg_venues ON wpg_concerts.venue = wpg_venues.id ';
+
+
/*
* Constructs a new concert object from an array of attributes.
* The attributes are expected to be named as in the database,
@@ -67,7 +73,6 @@ if ( !class_exists('GiglogAdmin_Concert') ) {
}
}
-
/**
* Get concert with given id.
*
@@ -78,8 +83,7 @@ if ( !class_exists('GiglogAdmin_Concert') ) {
{
global $wpdb;
- $query = 'SELECT * FROM wpg_concerts '
- . 'LEFT JOIN wpg_venues ON wpg_concerts.venue = wpg_venues.id '
+ $query = self::BASE_QUERY
. 'WHERE ' . $wpdb->prepare('wpg_concerts.id = %d', $id);
$results = $wpdb->get_results($query);
@@ -200,8 +204,7 @@ if ( !class_exists('GiglogAdmin_Concert') ) {
{
global $wpdb;
- $query = 'SELECT * FROM wpg_concerts '
- . 'INNER JOIN wpg_venues ON wpg_concerts.venue = wpg_venues.id ';
+ $query = self::BASE_QUERY;
$where = [];