![]() |
use of Unique in mySQL field cases Error - Printable Version +- CodeIgniter Forums (https://forum.codeigniter.com) +-- Forum: Using CodeIgniter (https://forum.codeigniter.com/forumdisplay.php?fid=5) +--- Forum: General Help (https://forum.codeigniter.com/forumdisplay.php?fid=24) +--- Thread: use of Unique in mySQL field cases Error (/showthread.php?tid=77115) |
RE: use of Unique in mySQL field cases Error - InsiteFX - 07-23-2020 Ok, here is another one I found that you can try. PHP Code: // Usage: Place this into your model: PHP Code: // Add this to your model. You may need to change it from protected to public if your not calling it from within. RE: use of Unique in mySQL field cases Error - richb201 - 07-25-2020 I am getting this error: ERROR - 2020-07-25 16:34:30 --> Severity: error --> Exception: syntax error, unexpected 'protected' (T_PROTECTED), expecting end of file /app/application/models/MyModel.php 16 I also tried public and I get this: ERROR - 2020-07-25 16:36:27 --> Severity: error --> Exception: syntax error, unexpected 'public' (T_PUBLIC), expecting end of file /app/application/models/MyModel.php 16 Here is MyModel.php from models ```` <?php /** * Created by PhpStorm. * User: richb201 * Date: 12/16/2017 * Time: 3:57 PM */ // Add this to your model. /** * Prepare INSERT IGNORE SQL query * * @param Array $data Array in form of "Column" => "Value", ... * @return Null */ public function insertIgnore(array $data) { $_prepared = array(); foreach ($data as $col => $val) { $_prepared[$this->db->_escape_identifiers($col)] = $this->db->escape($val); } $this->db->query('INSERT IGNORE INTO `titles` ('.implode(',',array_keys($_prepared)).') VALUES('.implode(',',array_values($_prepared)).');'); } ?> ```` RE: use of Unique in mySQL field cases Error - InsiteFX - 07-25-2020 Here is the whole class for it, I had to track it down. Just make the changes that you need. PHP Code: <?php And here is another one I found: PHP Code: public function insertIgnore(array $data) RE: use of Unique in mySQL field cases Error - richb201 - 07-25-2020 I guess more of my problem is with the model. I have named it MyModel.php and load it with $this->load->model('MyModel') in the controller's __construct? And then just call insertIgnore() in one of my callbacks? I also added another function to MyModel called public function update_population(). At the top of this model file containing the two functions, insertIgnore() and update_population() I have class MyModel extends CI_Model { public function __construct() { parent::__construct(); } Well, I managed to get the function in the model to run, update_population(). Now I just need to figure out how to set up the SQL. I still need to get the insertIgnore going.... thx for your help RE: use of Unique in mySQL field cases Error - richb201 - 07-25-2020 One more thing. I see that in the model I don't have access to "$this". So how can manipulate $this->db-> ?? RE: use of Unique in mySQL field cases Error - InsiteFX - 07-26-2020 If the class extends the Model class you should have access to $this->db RE: use of Unique in mySQL field cases Error - richb201 - 07-26-2020 I changed the class in model from CI_Model (as in the docs) to Model here: in the top of the model: class MyModel extends Model { public function __construct() { parent::__construct(); } Now I get: A PHP Error was encountered Severity: Error Message: Class 'Model' not found Filename: models/MyModel.php Line Number: 9 Backtrace: Any ideas? Do I need to pass $this into the model? like this: $this->MyModel->update_population($this); //this marks in the population or not from exclude RE: use of Unique in mySQL field cases Error - InsiteFX - 07-26-2020 Did you add the use to your model? PHP Code: use CodeIgniter\Model; Add that above the class MYModel You also need to add the namespace for your model PHP Code: namespace App\Models; If thats where it is. RE: use of Unique in mySQL field cases Error - richb201 - 07-26-2020 I put the CodeIgniter\Model; into the top of the model. When I run that it seems to work fine except the "$this" still doesn't appear in the model. I do see db under CI in the model. Do I perhaps need to open a separate connection to the mySQL table? Then I pasted namespace application\models; into the top of the controller. require 'vendor/autoload.php'; namespace application\models; I get this error when i do this: Severity: Compile Error Message: Namespace declaration statement has to be the very first statement or after any declare call in the script Filename: controllers/Configure.php Line Number: 4 Backtrace: Strangely, although $this is {MyModel}[0] in the debugger in the model, it appears to be working (not the code but at least the first few lines, see below). $this->db->where('email', $_SESSION['userid']); $this->db->where('campaign', $_SESSION['campaign']); $this->db->select('*'); $query = $this->db->get('stat_sample'); how can that be? Well, somehow it is working! RE: use of Unique in mySQL field cases Error - InsiteFX - 07-27-2020 Remove the this and just use the $db and see if it works. |