我有以下一些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)
我希望不会创建表,但它们是.有什么想法吗?
处理下面8个不同SQL问题的最佳方法是什么.
我在数据库模式下面放置了它,它在我的Rails模型中如何表示,以及我需要从数据库中获取的数据的七个问题.我回答了一些问题,其他问题我不确定最佳解决方案.
问题#7是一个曲线球,因为它可能会改变所有其他问题的答案.
Students ------- ID Name Courses ----- ID Name Grade Enrollments ---------- ID Student_ID Course_ID
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)
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) 尝试在不使用 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) 编辑 - 使用'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) 我有一小段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)
是否有其他东西我缺少替代?
这有效:
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,在声明中使用泛型,它可以工作.发生了什么?
activerecord ×2
mysql ×2
pdo ×2
php ×2
associations ×1
generics ×1
java ×1
transactions ×1
vue.js ×1