Tag: MySQL

如何在mySQL中的子查询中指定父查询字段?

有没有一种方法来指定在MySQL中的子查询中的父查询字段? 例如: 我已经用PHP编写了一个基本的公告板types程序。 在数据库中,每个post都包含:id(PK)和parent_id(父post的ID)。 如果该post本身是父亲,则其parent_id设置为0。 我正在尝试编写一个mySQL查询,它将查找每个父级post以及父级拥有的子级数。 $query = "SELECT id, ( SELECT COUNT(1) FROM post_table WHERE parent_id = id ) as num_children FROM post_table WHERE parent_id = 0"; 棘手的部分是,第一个ID不知道它应该引用子查询之外的第二个ID 。 我知道我可以做SELECT id AS id_tmp,然后在子查询中引用它,但是如果我也想返回id并保留“id”作为列名,那么我将不得不做一个查询返回我2列与相同的数据(这似乎是凌乱的我) $query = "SELECT id, id AS id_tmp, (SELECT COUNT(1) FROM post_table WHERE parent_id = id_tmp) as num_children FROM post_table WHERE parent_id […]

致命错误:调用未定义的函数mb_strlen()

我正在尝试使用Totorialzine的源代码来创build一个捐赠中心。 到目前为止,这一切对我来说都很好,但是唯一的问题是我一直在努力尝试着看一整天,而不能准确地确定代码的真正错误 当我的访客捐赠时,我在页面上提交评论的时候,这是我得到的。 Fatal error: Call to undefined function mb_strlen() in /home/yoursn0w/public_html/livetv/premium/thankyou.php on line 14 这里是php文件中的代码。 <?php require "config.php"; require "connect.php"; if(isset($_POST['submitform']) && isset($_POST['txn_id'])) { $_POST['nameField'] = esc($_POST['nameField']); $_POST['websiteField'] = esc($_POST['websiteField']); $_POST['messageField'] = esc($_POST['messageField']); $error = array(); if(mb_strlen($_POST['nameField'],"utf-8")<2) { $error[] = 'Please fill in a valid name.'; } if(mb_strlen($_POST['messageField'],"utf-8")<2) { $error[] = 'Please fill in […]

如何在同一台服务器上复制MySQL数据库

我有一个很大的MySQL数据库,我们把它live_db ,我想在同一台机器上复制这个数据库,以提供一个testing系统( test_db ),包括表结构和数据。 在有规律的时间间隔,我想用test_db的内容来更新live_db ; 如果可能的话增量 在MySQL中有一些内置的机制来做到这一点? 我认为主从复制不是我想要的,因为应该可以在test_db修改数据。 不过,这些变化不一定要保留。 问候, CGD

MySQL的 – 报价号码或不?

例如 – 我从cli创build数据库和表,并插入一些数据: CREATE DATABASE testdb CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; USE testdb; CREATE TABLE test (id INT, str VARCHAR(100)) TYPE=innodb CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; INSERT INTO test VALUES (9, 'some string'); 现在我可以做到这一点,这些例子的工作(所以 – 引号不会影响任何东西似乎): SELECT * FROM test WHERE id = '9'; INSERT INTO test VALUES ('11', 'some string'); 所以 – 在这些例子中,我select了一个string ,实际上存储为INT的string […]

mysqldump由cron和密码安全启动

我写了一个脚本来备份我的MySQL数据库,使用: mysqldump –opt –all-databases -u user -pmypassword > myDump.sql 一个cron每晚都会启动它,并将结果传给另一台服务器。 mypassword在我的脚本中显示清楚,每个人都可以看到它的适当的权利。 我也被告知/ proc问题(cmd运行可以看到)。 MySQL文档说: 在命令行上指定密码应被视为不安全。 请参阅第7.6节“确保您的密码安全”。 我还没有find这个神奇的7.6节。 什么是处理自动mysqldump和密码安全性的好习惯?

MySQL更新查询,左连接和分组依据

我正在尝试创build更新查询,并在获取正确的语法方面取得一点进展。 以下查询正在工作: SELECT t.Index1, t.Index2, COUNT( m.EventType ) FROM Table t LEFT JOIN MEvents m ON (m.Index1 = t.Index1 AND m.Index2 = t.Index2 AND (m.EventType = 'A' OR m.EventType = 'B') ) WHERE (t.SpecialEventCount IS NULL) GROUP BY t.Index1, t.Index2 它创build一个三元组Index1,Index2,EventCounts的列表。 它仅在t.SpecialEventCount为NULL的情况下执行此操作。 我正在尝试编写的更新查询应将此SpecialEventCount设置为该计数,即上述查询中的COUNT(m.EventType)。 这个数字可能是0或任何正数(因此左连接)。 索引1和索引2在表t中是唯一的,它们用于识别MEvent中的事件。 我如何修改select查询成为更新查询? 也就是说 UPDATE Table SET SpecialEventCount=COUNT(m.EventType)….. 但我很困惑把什么放在哪里,失败了许多不同的猜测。

PHP MYSQL – 插入到不使用列名称,但与自动增量字段

我需要插入一个32字段的长行到MySQL表中。 我想要做这样的事情: $sql="insert into tblname values (… 32 fields …)"; 显然,如果这些字段与MySQL表字段的顺序相同,那么它就可以正常工作。 但是,我的表有一个自动递增的ID,因为它是第一个字段。 我想要的是填写所有的表名,但第一个(ID)之一。 build议?

Mysql:复制行,但与新的ID

我有一个表“testing”与自动递增的id和任意数量的列。 我想在这个表中创build一个行的副本,所有的列除了id之外都是一样的。 有没有办法做到这一点,而不命名所有列? 我认为INSERT… SELECT… ON DUPLICATE KEY会帮助我,直到我意识到它从不进行INSERT ON DUPLICATE ,它只是更新现有的行。

在SQL或MySQL中不使用JOIN关键字的连接有什么问题吗?

当我开始编写数据库查询时,我并不知道JOIN关键字,当然我只是扩展了我已经知道的内容,并写下如下的查询: SELECT a.someRow, b.someRow FROM tableA AS a, tableB AS b WHERE a.ID=b.ID AND b.ID= $someVar 现在我知道这和INNER JOIN是一样的,我在代码中查找所有这些查询,并问我自己是否应该重写它们。 有臭味吗?或者他们好吗? 编辑: 我的回答总结 :这个查询没有错,但使用关键字将最有可能使代码更易读/维护。 我的结论是 :我不会改变我的旧查询,但我会改正我的写作风格,并在将来使用关键字。 感谢您的答案!

如何在phpmyadmin上制作复合主键

如何在phpmyadmin上创build一个复合主键。 学生证是年份和卷号的组合。 sid = 112132,2011年11年和2132年是卷号? 任何人帮助..