使用cakePHP将数据插入mysql数据库

使用cakePHP将数据插入mysql数据库,php,mysql,database,cakephp,insert,Php,Mysql,Database,Cakephp,Insert,我有一个简单的问题需要解决,我有数据需要插入到我的数据库中,以便将来导出到CSV,但是标准PHP代码对我不起作用,我尝试了以下几行,但没有成功: $insertQuery = ("INSERT INTO `DBNAME`.`TABLENAME` (`1`, `2`, `3`, `4`, `5`, `6`, `7`) VALUES ('{$1}', '{$2}', '{$3}', '{$cityquery['city']}', '{$cityquery['regionName']}', '{$ci

我有一个简单的问题需要解决,我有数据需要插入到我的数据库中,以便将来导出到CSV,但是标准PHP代码对我不起作用,我尝试了以下几行,但没有成功:

$insertQuery = ("INSERT INTO `DBNAME`.`TABLENAME` (`1`, `2`, `3`, `4`, `5`, `6`, `7`) VALUES ('{$1}', '{$2}', '{$3}', '{$cityquery['city']}', '{$cityquery['regionName']}', '{$cityquery ['country']}', '{$lang}')");
提前谢谢

G'day史蒂夫

请问您为什么在CakePHP中使用SQL

CakePHP使用模型和ORM方法来管理数据。可在此处找到:

我假设您使用的是V2,因为这是我熟悉的版本

CakePHP强制您以复数形式调用数据库表名,以单数形式调用模型类(例如)

现在,当您想将数据保存给用户时,我们只需使用CakePHP的ORM

$this->User->save(); //Now, assume we want to add a new record, we simply do:
$this->User->save(array('first_name' => 'Melon', 'last_name' => 'Head'));
如果我们想编辑现有记录,有几种方法可以实现。一个例子是:

$this->User->id = 1;
$this->User->save(array('email' => 'melon.head@yahoo.com'));
还是我用的那个

$this->User->save(array('id' => 1, 'email' => 'melon.head@yahoo.com'));
我希望这能回答你的问题:)

我会再延长一点。您提到的表名是“assessments”。因此,在CakePHP中的“app/Model”文件夹中,我们将在现有文件中创建一个名为Assessment.php的php文件:

class Assessment extends AppModel{}
这是连接数据库的第一步,在app/Config/database.php中有一个文件。打开此文件时,我们将看到一个数组:

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'mysql_user',
    'password' => 'da_password',
    'database' => 'the_db_name',
    'encoding' => 'utf8'
);
设置此阵列,使其可以连接到数据库

现在我们转到控制器。我假设您有一个名为AssessmentController.php的控制器设置,如果您没有,我们将很快修复

例如,在控制器中,我们设置了一个保存数据的函数

Database table name = users,
Model i.e (Class) name = User
public function index(){
      //Here we'll save the data
      //I'll assume also you know where $1 is coming from.
      //Data from the user comes through the array var $this->request->data
     $this->Assessment->save(
            array(
                 '1' => "{$1}"
            )
     );
}
如果您有不同的控制器名称设置,则可以。CakePHP自动将相同的模型和控制器名称连接在一起。在上面的示例中,我们有评估控制器和评估模型

如果我们有一个不同的控制器,例如,控制器名为Student,那么我们只需向控制器添加一个名为$uses的数组

public $uses = array('Assessment');
这将告诉CakePHP‘嘿,我需要这个模型’。CakePHP回答“给你。”

G'day Steve

请问您为什么在CakePHP中使用SQL

CakePHP使用模型和ORM方法来管理数据。可在此处找到:

我假设您使用的是V2,因为这是我熟悉的版本

CakePHP强制您以复数形式调用数据库表名,以单数形式调用模型类(例如)

现在,当您想将数据保存给用户时,我们只需使用CakePHP的ORM

$this->User->save(); //Now, assume we want to add a new record, we simply do:
$this->User->save(array('first_name' => 'Melon', 'last_name' => 'Head'));
如果我们想编辑现有记录,有几种方法可以实现。一个例子是:

$this->User->id = 1;
$this->User->save(array('email' => 'melon.head@yahoo.com'));
还是我用的那个

$this->User->save(array('id' => 1, 'email' => 'melon.head@yahoo.com'));
我希望这能回答你的问题:)

我会再延长一点。您提到的表名是“assessments”。因此,在CakePHP中的“app/Model”文件夹中,我们将在现有文件中创建一个名为Assessment.php的php文件:

class Assessment extends AppModel{}
这是连接数据库的第一步,在app/Config/database.php中有一个文件。打开此文件时,我们将看到一个数组:

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'mysql_user',
    'password' => 'da_password',
    'database' => 'the_db_name',
    'encoding' => 'utf8'
);
设置此阵列,使其可以连接到数据库

现在我们转到控制器。我假设您有一个名为AssessmentController.php的控制器设置,如果您没有,我们将很快修复

例如,在控制器中,我们设置了一个保存数据的函数

Database table name = users,
Model i.e (Class) name = User
public function index(){
      //Here we'll save the data
      //I'll assume also you know where $1 is coming from.
      //Data from the user comes through the array var $this->request->data
     $this->Assessment->save(
            array(
                 '1' => "{$1}"
            )
     );
}
如果您有不同的控制器名称设置,则可以。CakePHP自动将相同的模型和控制器名称连接在一起。在上面的示例中,我们有评估控制器和评估模型

如果我们有一个不同的控制器,例如,控制器名为Student,那么我们只需向控制器添加一个名为$uses的数组

public $uses = array('Assessment');

这将告诉CakePHP‘嘿,我需要这个模型’。CakePHP响应“给你”。

你需要提供更多信息-你的代码只显示一个字符串,没有数据库功能请尝试添加
echo$insertQuery粘贴到此处以帮助我们了解问题。添加该代码并收到以下信息:插入
DBNAME
TABLENAME
1
2
3
4
5
6
7
)值(‘1’、‘2’、‘3’、‘城市’、‘州’、‘国家’、‘英’)您使用的是哪个版本的CakePHP?CakePHP 3与CakePHP 2处理数据库的方法截然不同。您需要提供更多信息-您的代码只显示字符串,没有数据库功能请在声明后立即尝试添加
echo$insertQuery;
,并将其粘贴到此处以帮助我们理解问题。添加并收到以下信息:
DBNAME
TABLENAME
1
2
3
4
5
6
7
)值('1','2','3','city','state','country','en'))您使用的是哪个版本的CakePHP?CakePHP 3处理数据库的方法与CakePHP 2非常不同。我还忘了提到,我希望插入字符串中的数据在使用前经过清理。您还应该使用绑定参数来提高安全性。您仍然可以使用ORM通过$this->TABLENAME->save来实现这一点(数组('1'=>“{$1}”,'2'=>“{$2}”))以此类推。当然,请确保您有模型设置。使用此设置的原因是,人们将填写表单,并传输数据,但结果以1、2、3、4的形式与表单上相应的多项选择答案相对应。本例中的数据库名为评估,我猜我只需要2行code、 一个用于识别本案例评估中的DB,另一个用于上传数据。我不知道这些行应该如何编写。这是我第一次使用cakePHP,虽然我没有遇到任何问题,但让它通过一些研究发送电子邮件,这让我感到困惑。感谢Againok清除了“第2行”但是如何建立一个模型以及这样做的目的是什么呢?我基本上只想写,$this->assessments->save(