标签: php

数据库中的应用程序设置

过去,我将所有通用设置和配置项(例如:自定义应用程序标题、家庭地址、版本、调试等)存储在“settings.php”文件中,我会将其包含在所有脚本中。

我认为最好为这些应用程序设置专门设置一个数据库表,这样您就不需要编辑 php 文件来调整或进行更改。然而,我对如何设置这个有点谨慎。

我一直在考虑两种选择:

  1. 我有一个包含一行多列的表格,使每一列成为唯一的变量值。
  2. 我有两列,第一列是变量名,第二列是变量的值。

从数据库设计的角度来看,有什么建议或我应该注意的事情吗?

mysql configuration php

8
推荐指数
1
解决办法
1819
查看次数

如何创建重复工作日作为数据透视表中的列?

我是编程和数据库的新手,如果能在以下场景中得到一些帮助,我将不胜感激。

我在 SQL Server 中使用 PHP。我正在构建一个员工考勤系统,我想创建一个(枢轴)表,其中月份为行,所有工作日名称为列(针对特定年份)。单元格中的值将是天数(1、2、3...31)。

单元格的背景颜色(已作为表格列存在)声明了员工休假的类型。该表具有以下列:employee_id, leave_date, leave_type, leave_type_color.

我想达到如下结果:

在此处输入图片说明

谢谢你。

sql-server pivot php

8
推荐指数
1
解决办法
923
查看次数

MySQL 连接不再起作用

我有两个 MySQL 服务器在运行(127.0.0.1:3306 和 127.0.0.1:3307)。现在我收到这个奇怪的错误:mysql_connect(): Lost connection to MySQL server at 'reading initial communication packet'我可以连接localhost:3307,但没有任何表/数据库。我很确定/etc/my.cnf是对的:

[mysqld_multi]
mysqld     = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user       = root
password   = ***

[mysqld]
port       = 3306
socket   = /var/run/mysql/mysql.sock

[mysqld2]
port       = 3307
socket   = /var/run/mysql/mysql2.sock
Run Code Online (Sandbox Code Playgroud)

我现在能做什么?我怎样才能理智地重新启动 MySQL 服务器?

也许更重要的是:

如何确保所有表仍然存在?

mysql php

7
推荐指数
1
解决办法
2530
查看次数

MySQL 'LOAD DATA INFILE':当外键存在时无法替换条目

这是我的数据库方案的最小案例:

CREATE TABLE `test` (
  `id` int(11) NOT NULL,
  `name` varchar(22) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 CREATE TABLE `test2` (
  `id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  CONSTRAINT `test2_ibfk_1` FOREIGN KEY (`id`) REFERENCES `test` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)

好吧,还有我们里面的东西:

    mysql> select * from test;
+-----+-------+
| id  | name  |
+-----+-------+
| 111 | AAABA |
+-----+-------+
1 row in set (0.00 sec)

mysql> select * from test2;
+-----+
| id …
Run Code Online (Sandbox Code Playgroud)

mysql innodb php

6
推荐指数
1
解决办法
3080
查看次数

转义 T-SQL 关键字

$sql = "SELECT Kill FROM tbl_pvporderview";
Run Code Online (Sandbox Code Playgroud)

问题是我最终得到:Incorrect syntax near the keyword 'Kill'.

因为kill是 T-SQL 命令......有什么办法可以绕过它?

我无法更改列名,因为它经常被软件使用,而且我无法更改使用数据库的软件。

因此,如果我用来sqlserv从该列中选择数据,它只会失败。'' 或 "" 不会有帮助。

完整的声明将是:

$sql = "SELECT serial,Kill FROM tbl_pvporderview WHERE Kill > (?) ORDER BY Kill DESC ";
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql php

6
推荐指数
2
解决办法
9858
查看次数

InnoDB Master-Master 复制在断电测试后变得不一致

下午各位大佬

我目前正在使用 InnoDB 作为数据库引擎对 Master-Master 复制设置进行压力测试。

我们正在使用这个简单的脚本来测试我们从远程服务器在 Linux CLI 中运行的脚本。

<?php

while(true) {
    try {
        $conn = mysql_connect('10.0.10.210', 'test', 'test');
        if ($conn) {
            mysql_select_db('testdb');
            $random = rand(0, 1000);
            $res = mysql_query("INSERT INTO test VALUES(0, 'test',    $random)");
            if ($res) {
                echo "\n inserted " . microtime();
            } else {
                echo "\n not inserted " . microtime();
            }
            mysql_close($conn);
        } else {
            echo "\n can not connect";
        }
    } catch (Exception $ex) {
        echo "\n can not insert"  . microtime();
    }
} …
Run Code Online (Sandbox Code Playgroud)

mysql innodb replication php failover

6
推荐指数
1
解决办法
2059
查看次数

实现软删除

有人可以向我展示或描述如何实现软删除吗?

我有包含以下字段的凭证表:id, username, password, serial

我想根据客户的请求显示给定的行数,一旦显示,它们应该被删除,以便不再显示。(它们已经无效了。)

我认为软删除将确保不会显示两次凭证。如果您对我将如何做有任何其他想法,我将不胜感激。

mysql php

6
推荐指数
1
解决办法
1万
查看次数

为什么有不同级别的 MySQL 排序规则/字符集?

查看 MySQL 服务器变量,服务器和数据库排序规则设置为 latin1_swedish_ci,但 collaction_connection 为 utf8_general_ci。此外,排序规则/字符集设置在多个级别:服务器、数据库、表和列。您还需要考虑 PHP MySQL 连接的字符集。

我的问题有四点:

  1. 为什么有不同级别的 MySQL 排序规则/字符集?是这样你就可以混合你的字符集来满足你的需要吗?如果我错了,请纠正我,但 utf8 似乎是一般用途的最佳字符集,那么为什么我使用的大多数 LAMP 设置都默认使用 latin1?

  2. 您是否应该始终确保您的 PHP 连接与您正在处理的数据库的字符集相匹配?

  3. 如果您可以拥有使用不同字符集的不同表,您是否只使用 SET NAMES 或 mysql(i)_set_charset 来切换?

  4. 如果您有一个包含多个字符集的表,您如何管理它,因为连接一次只能使用一个字符集?

非常感谢。

编辑:

关于评论:

“您可以使用任一种,前者仅用于设置结果字符集,后者用于设置 PHP 内部编码以用于 mysqli_real_escape_string 和结果编码。”

我以为你不打算一起使用 real_escape_string 和 SET NAMES 。见:http : //www.php.net/manual/en/mysqlinfo.concepts.charset.php

mysql collation php character-set

6
推荐指数
1
解决办法
2859
查看次数

如何安全地连接应用程序和数据库服务器?

(更新)首先,我在不同的服务器上有我的应用程序和数据库。连接它们很容易,只是我不确定如何保护我的数据库服务器。

这是我已经完成的:

  • mysql_secure_installation安装MySQL之后。所以,所有这些都得到了照顾:

    • 强 64 字符 root 密码
    • 没有匿名用户
    • 仅在本地主机上进行 root 登录
    • 没有测试数据库
  • 用于服务器间通信的非公网(在我的 my.cnf 中,有这样的内容:bind-address = 10.128.2.18,其中 10.128.2.18 是 MySQL 数据库服务器的专用网络 IP 地址)。

  • 数据库的单独用户,不可猜测的用户名和 64 个字符的强密码;用户帐号的IP地址设置为应用服务器的私有IP地址。我用这样的命令创建了用户:

    GRANT ALL ON `app_db`.* TO 'db_user'@'10.128.2.9' IDENTIFIED BY 'password';
    
    Run Code Online (Sandbox Code Playgroud)

    该应用程序是 wordpress,所以我需要GRANT ALL ON避免任何意外问题。

考虑的选项(但未采用):

  • 有人告诉我,SSH 隧道、SSL、OpenVPN、Tinc 和 IPsec等技术通常不使用,因为它们具有性能成本(由于加密、延迟等导致的资源使用)。

那么,我还需要什么,还是我足够好?其他人是怎么做的?请尽可能详细(链接到教程或您建议的内容会很有帮助)。

mysql security php

6
推荐指数
1
解决办法
1万
查看次数

跟踪学生出勤情况的数据库设计

我对用于跟踪学生出勤率的数据库表的设计有疑问。目前,我的桌子students至少有4000学生。

创建一个出勤数据库来跟踪他们的出勤情况几乎会有几4000*30days*12months => ~ 1,400,000行(忽略假期/周日)。

考勤表将有:

id (INT)
student_id (INT) 
course_id (INT)
data (DATETIME)
present/absent (TINYINT, as I'll store 1/0)
comments
Run Code Online (Sandbox Code Playgroud)

我正在使用PHP/MySql. 一张桌子变得这么大,还有其他办法吗?

mysql database-design php

6
推荐指数
2
解决办法
3万
查看次数