过去,我将所有通用设置和配置项(例如:自定义应用程序标题、家庭地址、版本、调试等)存储在“settings.php”文件中,我会将其包含在所有脚本中。
我认为最好为这些应用程序设置专门设置一个数据库表,这样您就不需要编辑 php 文件来调整或进行更改。然而,我对如何设置这个有点谨慎。
我一直在考虑两种选择:
从数据库设计的角度来看,有什么建议或我应该注意的事情吗?
我是编程和数据库的新手,如果能在以下场景中得到一些帮助,我将不胜感激。
我在 SQL Server 中使用 PHP。我正在构建一个员工考勤系统,我想创建一个(枢轴)表,其中月份为行,所有工作日名称为列(针对特定年份)。单元格中的值将是天数(1、2、3...31)。
单元格的背景颜色(已作为表格列存在)声明了员工休假的类型。该表具有以下列:employee_id, leave_date, leave_type, leave_type_color.
我想达到如下结果:
谢谢你。
我有两个 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 服务器?
也许更重要的是:
如何确保所有表仍然存在?
这是我的数据库方案的最小案例:
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) $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) 下午各位大佬
我目前正在使用 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) 有人可以向我展示或描述如何实现软删除吗?
我有包含以下字段的凭证表:id, username, password, serial。
我想根据客户的请求显示给定的行数,一旦显示,它们应该被删除,以便不再显示。(它们已经无效了。)
我认为软删除将确保不会显示两次凭证。如果您对我将如何做有任何其他想法,我将不胜感激。
查看 MySQL 服务器变量,服务器和数据库排序规则设置为 latin1_swedish_ci,但 collaction_connection 为 utf8_general_ci。此外,排序规则/字符集设置在多个级别:服务器、数据库、表和列。您还需要考虑 PHP MySQL 连接的字符集。
我的问题有四点:
为什么有不同级别的 MySQL 排序规则/字符集?是这样你就可以混合你的字符集来满足你的需要吗?如果我错了,请纠正我,但 utf8 似乎是一般用途的最佳字符集,那么为什么我使用的大多数 LAMP 设置都默认使用 latin1?
您是否应该始终确保您的 PHP 连接与您正在处理的数据库的字符集相匹配?
如果您可以拥有使用不同字符集的不同表,您是否只使用 SET NAMES 或 mysql(i)_set_charset 来切换?
如果您有一个包含多个字符集的表,您如何管理它,因为连接一次只能使用一个字符集?
非常感谢。
编辑:
关于评论:
“您可以使用任一种,前者仅用于设置结果字符集,后者用于设置 PHP 内部编码以用于 mysqli_real_escape_string 和结果编码。”
我以为你不打算一起使用 real_escape_string 和 SET NAMES 。见:http : //www.php.net/manual/en/mysqlinfo.concepts.charset.php
(更新)首先,我在不同的服务器上有我的应用程序和数据库。连接它们很容易,只是我不确定如何保护我的数据库服务器。
这是我已经完成的:
冉mysql_secure_installation安装MySQL之后。所以,所有这些都得到了照顾:
用于服务器间通信的非公网(在我的 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避免任何意外问题。
考虑的选项(但未采用):
那么,我还需要什么,还是我足够好?其他人是怎么做的?请尽可能详细(链接到教程或您建议的内容会很有帮助)。
我对用于跟踪学生出勤率的数据库表的设计有疑问。目前,我的桌子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. 一张桌子变得这么大,还有其他办法吗?
php ×10
mysql ×8
innodb ×2
sql-server ×2
collation ×1
failover ×1
pivot ×1
replication ×1
security ×1
t-sql ×1