title: How do I insert a mysql spatial point with a yii model?
body: <p>I have a model type that was generated from a mysql table that has address data and also a spatial <code>POINT</code> field named "coordinates".  When a model is created or updated I want to geocode the address and store the latitude and longitude coordinates in the <code>POINT</code> field.</p>
  
  <p>My understanding is the way to do this is to geocode the address in the model's <code>beforeSave</code> method.  I have done this and have the coordinates in an associative array.  Now my question is how can I insert this data into my coordinates field?  This is what I'm trying:</p>
  
  <pre><code>public function beforeSave()
  {
      $singleLineAddress = $this-&gt;getSingleLineAddress();
      $coords = Geocoder::getCoordinates($singleLineAddress);
  
      // WORKS: using the following line works to insert POINT(0 0)
      //$this-&gt;coordinates = new CDbExpression("GeomFromText('POINT(0 0)')");
  
      // DOESN'T WORK: using the following line gives an error
      $this-&gt;coordinates = new CDbExpression("GeomFromText('POINT(:lat :lng)')",
          array(':lat' =&gt; $coords['lat'], ':lng' =&gt; $coords['lng'] ));
  
      return parent::beforeSave();
  }
  </code></pre>
  
  <p>When I do this I get the following error:</p>
  
  <blockquote>
    <p>CDbCommand failed to execute the SQL statement: SQLSTATE[HY093]:
    Invalid parameter number: number of bound variables does not match
    number of tokens. The SQL statement executed was: INSERT INTO <code>place</code>
    (<code>city</code>, <code>state</code>, <code>name</code>, <code>street</code>, <code>postal_code</code>, <code>phone</code>, <code>created</code>,
    <code>coordinates</code>) VALUES (:yp0, :yp1, :yp2, :yp3, :yp4, :yp5,
    UTC_TIMESTAMP(), GeomFromText('POINT(:lat :lng)'))</p>
  </blockquote>