gpt4 book ai didi

php - PHPUnit 数据库查询中“创建表”有时会失败

转载 作者:行者123 更新时间:2023-11-29 16:51:18 24 4
gpt4 key购买 nike

我的问题是,用于创建表的两个相同的查询会给出不同的结果。/classes/database.php

<?php
/**
* Created by IntelliJ IDEA.
* User: Timon
* Date: 10/12/18
* Time: 3:10 PM
*/

namespace canvas\classes;
use \PDO;

class Database
{
private $connction;

public function __construct($configuration = [])
{
include 'values.php';
$this->connction = $pdo = new PDO('mysql:host='.$host.';dbname='.$db, $user, $passwd);
}

public function query($query)
{
return $this->connction->query($query);
}
}
$database = new Database();

现在是测试单元:/测试/databaseTest.php

<?php

namespace canvas\classes;

use PHPUnit\Framework\TestCase;


class DatabaseTest extends TestCase
{

/**
* @param string $query
*
* @dataProvider providerTestQuery
*/
public function testQuery($query){
$database= new Database();
var_dump($query);
$result=$database->query($query);
var_dump($result);
self::assertNotFalse($result);
}
public function providerTestQuery()
{
return array(
array('Create Database Test'),
array('Use Test'),
array("CREATE TABLE employees (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50)
)"),
);
}
public function testCreateTable(){
$database= new Database();
var_dump($database->query('Use Test'));
self::assertNotFalse($database->query("CREATE TABLE persons(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
first_name VARCHAR(30) NOT NULL,
last_name VARCHAR(30) NOT NULL,
email VARCHAR(70) NOT NULL UNIQUE
)"));
}
}

使用最后一个数据集测试testQuery失败,但testCreateTable成功。如果我用手写查询,它会失败,如果我从互联网上复制它,它可能会成功,也可能不会成功。PS:我目前正在使用 JetBrains 的一个想法。可能是格式问题?这些查询在我的数据库 SQL 执行器中有效。

最佳答案

第一个创建表进入不同的数据库并且没有被删除。因此它失败了,因为该表已经存在。

关于php - PHPUnit 数据库查询中“创建表”有时会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52799643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com