小编Dav*_*ave的帖子

PHP PDO在事务中创建多个表

我有以下一些PHP代码,它创建了三个数据库表,然后尝试回滚事务.

$dbh = new \PDO("mysql:host=localhost;dbname=dbname", 'usernamehere', 'passwordhere');
$dbh->setAttribute(\PDO::ATTR_AUTOCOMMIT,FALSE);
$dbh->beginTransaction();
$sql = "CREATE TABLE IF NOT EXISTS `a` (`id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;";
$dbh->exec($sql);
$sql = "CREATE TABLE IF NOT EXISTS `b` (`id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;";
$dbh->exec($sql);
$sql = "CREATE TABLE IF NOT EXISTS `c` (`id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;";
$dbh->exec($sql);
$dbh->rollBack();
Run Code Online (Sandbox Code Playgroud)

我希望不会创建表,但它们是.有什么想法吗?

php mysql pdo transactions

5
推荐指数
1
解决办法
2131
查看次数

ActiveRecord - 非规范化案例研究

处理下面8个不同SQL问题的最佳方法是什么.

我在数据库模式下面放置了它,它在我的Rails模型中如何表示,以及我需要从数据库中获取的数据的七个问题.我回答了一些问题,其他问题我不确定最佳解决方案.

问题#7是一个曲线球,因为它可能会改变所有其他问题的答案.

标准

  1. 不应该要求n + 1个查询.多个查询都可以,但如果返回的每一行都需要一个额外的查询,那么它就不可扩展.
  2. 不应该要求后处理来过滤SQL可以自己完成的结果.例如,第五个答案不应该是从数据存储中拉出所有学生,然后删除那些没有课程的学生.
  3. 检索对象的计数不应该触发另一个SQL查询.
  4. 如果SQL允许我聚合数据,则不必通过非规范化添加数据库列
  5. NOSQL解决方案(如MongoDB或CouchDB)是否更适合回答以下所有问题?

数据库架构

Students
-------
ID
Name

Courses
-----
ID
Name
Grade

Enrollments
----------
ID
Student_ID
Course_ID

ActiveRecord模型


class Course < ActiveRecord::Base
  has_many :enrollments
  has_many :students, :through=>:enrollments
end
class Enrollment < ActiveRecord::Base
  belongs_to :student
  belongs_to :course
end
class Student < ActiveRecord::Base
  has_many :enrollments
  has_many :courses, :through => :enrollments
end
Run Code Online (Sandbox Code Playgroud)

问题

1)检索9年级数学课程的所有学生

SQL


SELECT s.* FROM Students s
LEFT JOIN Enrollments e on e.student_id = s.id
LEFT JOIN Courses c on e.course_id …
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails denormalization

5
推荐指数
1
解决办法
2369
查看次数

没有 v-model 的 Vue.JS 复选框

尝试在不使用 v-model 的情况下创建复选框

<input type="checkbox" :value="value" @change="$emit('input', $event.target.checked)" />
Run Code Online (Sandbox Code Playgroud)

复选框将选中和取消选中,并将输入事件发送到父级,但值不会改变。我的父组件如下所示:

<custom-component v-model="some_boolean_value"></custom-component>
Run Code Online (Sandbox Code Playgroud)

vue.js

3
推荐指数
1
解决办法
5078
查看次数

Rails - 关联上的Eager Load Association

编辑 - 使用'includes'生成SQL'IN'子句.使用Oracle时,这有1000项限制.它不适用于我的公司.还有其他解决方案吗?

是否可以在关联上急切加载关联?

例如,假设我有一个学院课程,一个学院有很多学生.每个学生都属于student_level

class Academy < ActiveRecord::Base
  has_many :students
end

class Student < ActiveRecord::Base
  belongs_to :academy
  belongs_to :student_level
end

class StudentLevel < ActiveRecord::Base
  has_many :students
end
Run Code Online (Sandbox Code Playgroud)

是否有可能在学院中定制关联,以便在我加载学生时,我总是在学生中加载student_level?

换句话说,我希望以下代码段总共产生一个或两个查询,而不是每个学生一个查询:

@academy.students.each do |student|
  puts "#{student.name} - #{student.student_level.level_name}"
end
Run Code Online (Sandbox Code Playgroud)

我知道如果我将学生从一个协会改为一个方法,我可以做到这一点,但我不想这样做,因为我无法在其他查询中将学生作为一个关联引用.我也知道我可以通过以下方式在SQL中执行此操作,但我想知道是否有一种方法可以在我的关联上没有finder_sql时执行此操作,因为现在我需要在我的默认范围更改时更新我的​​finder_sql,这赢了不加载关联:

SELECT students.*, student_levels.* FROM students
LEFT JOIN student_levels ON students.student_level_id = student_levels.id
WHERE students.academy_id = ACADEMY_ID_HERE
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails associations eager-loading

2
推荐指数
1
解决办法
2528
查看次数

PHP PDO Prepared Statement Query不替代

我有一小段PHP代码:

$stm = $db->prepare($sql);
$result = $stm->execute($params);
Run Code Online (Sandbox Code Playgroud)

$ params如下

array(1) {
  [0]=>
  string(3) "why"
}
Run Code Online (Sandbox Code Playgroud)

但是,发送到MySQL的$ sql仍然包含一个根据MySQL日志的问号:

1 Query SELECT a.* FROM article a
LEFT JOIN article_links al on a.id = al.from_article_id
WHERE al.to_article = '?'
Run Code Online (Sandbox Code Playgroud)

是否有其他东西我缺少替代?

php mysql pdo prepared-statement

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

无法在Java中的一行上声明哈希表

这有效:

Hashtable myHT;
myHT = new Hashtable<String, String>();
Run Code Online (Sandbox Code Playgroud)

这失败了:

Hashtable myHT<String,String> = new Hashtable<String,String>();
Run Code Online (Sandbox Code Playgroud)

出现此错误:

[javac] /home/me/code/SomeFile.java:10: error: ';' expected
[javac]       Hashtable myHT<String,String> = new Hashtable<String,String>();
Run Code Online (Sandbox Code Playgroud)

这失败了:

Hashtable myHT<String,String>;
myHT = new Hashtable<String,String>();
Run Code Online (Sandbox Code Playgroud)

有错误:

[javac] /home/me/code/SomeFile.java:10: error: ';' expected
[javac]       Hashtable myHT<String,String>;
Run Code Online (Sandbox Code Playgroud)

此外,行为不一致.在声明中声明并实例化的文件中有其他HashTables,在声明中使用泛型,它可以工作.发生了什么?

java generics

-3
推荐指数
1
解决办法
67
查看次数