我正在为我的应用程序使用cakePHP框架。我使用xampp在localhost上对其进行了编程,现在尝试将其上传到我的网站上。它在localhost上没有任何问题。现在只有一页,在新服务器上不起作用。其他站点(也使用数据库连接)可以正常工作。
对于该站点,将显示以下消息:
错误:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误;请参见SQL语句。检查与您的MySQL服务器版本相对应的手册,以在第1行的’add’附近使用正确的语法 SQL查询:添加
错误:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法有错误;请参见SQL语句。检查与您的MySQL服务器版本相对应的手册,以在第1行的’add’附近使用正确的语法
SQL查询:添加
函数add()看起来像这样。
public function add() { //$this->create(); $word_id = $this->Word->getWord_id(); $save = $this->save(array('word_id' => $word_id, 'text' => $this->getText($word_id), 'mistake' => 0)); return $save['Game']['id']; }
在localhost上,我使用了MySQL-Client-Version:mysqlnd 5.0.8-dev-20102224-$ Revision:310735 $和PHP版本5.3.8。
在服务器上,我使用MySQL-Client-Version:5.1.62和PHP版本5.3.17。
非常感谢您的帮助!
编辑:模型“游戏”:
class Game extends AppModel { public $name = 'Game'; public $belongsTo = 'Word'; public $searchedWord = ''; public function addGame() { // Create new game $word_id = $this->Word->getWord_id(); $save = $this->save(array('word_id' => $word_id, 'text' => $this->getText($word_id), 'mistake' => 0)); return $save['Game']['id']; // Build the hangman } }
当我调试$ this-> Game时,输出为:
object(AppModel) { useDbConfig => 'default' useTable => 'games' id => null data => array() schemaName => null table => 'games' primaryKey => 'id' validate => array() validationErrors => array() validationDomain => null name => 'Game' alias => 'Game' tableToModel => array( 'games' => 'Game' ) cacheQueries => false belongsTo => array() hasOne => array() hasMany => array() hasAndBelongsToMany => array() actsAs => null Behaviors => object(BehaviorCollection) { modelName => 'Game' defaultPriority => (int) 10 } whitelist => array() cacheSources => true findQueryType => null recursive => (int) 1 order => null virtualFields => array() __backAssociation => array() __backInnerAssociation => array() __backOriginalAssociation => array() __backContainableAssociation => array() findMethods => array( 'all' => true, 'first' => true, 'count' => true, 'neighbors' => true, 'list' => true, 'threaded' => true ) }
通常,如果发生此错误,则您没有模型实例,但是您正在使用的应用程序模型实例。应用程序模型实例没有add()方法,而是直接使用add()查询数据库。
因此,请确保正确包含您的模型。由于您没有向我们展示代码,因此您如何调用方法(以及如何使模型对控制器可用),但是我无法提供任何具体建议。
如果您手动包含它:
$this->ModelName = ClassRegistry::init('ModelName');