Sliq
Sliq

Reputation: 16494

mySQL/PHP: SQL Statement, query and result assignment in ONE line?

Is it possible to re-write the code below, maybe even with an if (result > 0) statement, in just one line (or simply shorter)?

// a simple query that ALWAYS gets ONE table row as result
$query  = $this->db->query("SELECT id FROM mytable WHERE this = that;");
$result = $query->fetch_object();
$id     = $result->id;

I've seen awesome, extremely reduced constructs like Ternary Operators (here and here - btw see the comments for even more reduced lines) putting 4-5 lines in one, so maybe there's something for single result SQL queries like the above.

Upvotes: 0

Views: 211

Answers (1)

Ross Smith II
Ross Smith II

Reputation: 12179

You could shorten

$query  = $this->db->query("SELECT id FROM mytable WHERE this = that;");
$result = $query->fetch_object();
$id     = $result->id;

to

$id = $this->db->query("SELECT id FROM mytable WHERE this = that")->fetch_object()->id;

but this, and the original code will emit errors, if any of the functions returns an unexpected response. Better to write:

$query  = $this->db->query("SELECT id FROM mytable WHERE this = that");
if (!$query) {
     error_log('query() failed');
     return false;
}
$result = $query->fetch_object();
if (!$result) {
     error_log('fetch_object() failed');
     return false;
}
$id     = $result->id;

Upvotes: 3

Related Questions