我正在INSERT
从一个php文件运行查询,但后来我需要从外部php文件中获取最后一个插入的id,以便根据该id运行另一个查询.我怎么能用CURRVAL
或用它来解决这个问题RETURNING
?从外部的php文件,如果我做的事情
$result = pg_query($db,"SELECT CURRVAL('app.example_id_seq'), ... ");
我没有结果.
postgresql lastinsertid postgresql-9.1 sql-returning currval
我有一份学生和家长名单,想使用学生证将他们分组为家庭。拥有共同学生 ID 的家长可以被视为一个家庭,拥有共同家长 ID 的学生也可以被视为一个家庭。这是一个示例表:
p_id | parent_name | s_id | student_name |
------------------------------------------|
1 | John Doe | 100 | Mike Doe |
3 | Jane Doe | 100 | Mike Doe |
3 | Jane Doe | 105 | Lisa Doe |
5 | Will Willy | 108 | William Son |
Run Code Online (Sandbox Code Playgroud)
我想最终得到这样的结果:
parents | students |
-------------------|------------------------|
John Doe, Jane Doe | Mike Doe, Lisa Doe |
Will Willy | William Son |
Run Code Online (Sandbox Code Playgroud)
为了实现这一目标,我目前正在使用:
SELECT array_agg(parents) AS …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将对象推送到数组中,以得到这样的对象数组:
[
{"recipient_name":"John D", "phone_number":"123456"},
{"recipient_name":"Doe J", "phone_number":"654321"},
{"recipient_name":"Jon Do", "phone_number":"112233"},
]
Run Code Online (Sandbox Code Playgroud)
所以我循环遍历一个更大的数组来获取姓名和电话号码,并将它们作为一个对象推送到这样的数组中:
$myLargerArray = pg_fetch_all($messageQuery); // This is my larger array
$size = count($myLargerArray);
for( $j = 0; $j < $size; $j++ ) {
$myRecipientsObj->recipient_name = $myLargerArray[$j]['recipient_name'];
$myRecipientsObj->phone_number = $myLargerArray[$j]['phone_number'];
var_dump($myRecipientsObj); // This outputs the correct data added from [$j]
array_push($myObjArray->message_recipients, $myRecipientsObj);
var_dump($myObjArray->message_recipients); // The output shows array elements are being overwritten at each loop iteration
}
Run Code Online (Sandbox Code Playgroud)
这是最后一个var_dump($myObjArray->message_recipients)
外观的示例:
array(1) {
[0]=>
object(stdClass)#2 (2) {
["recipient_name"]=>
string(12) "First …
Run Code Online (Sandbox Code Playgroud) 假设我有一个数组。
$array1 = array('John','Mike','Tim','Dan');
使用foreach
迭代,我循环遍历,执行返回以下$array1
任一结果的数据库查询:true
false
foreach ($array1 as $key => $value) {
$dbQueryResult = true; // or false depending on iteration
if($dbQueryResult === true){
// HOW DO I CHECK IF IT IS THE FIRST TIME I'M GETTING HERE
}
}
Run Code Online (Sandbox Code Playgroud)
如何检查这是否是我第一次在迭代if
内的语句中获得所需的结果foreach
(如上例所示)?
arrays ×2
php ×2
postgresql ×2
array-agg ×1
array-push ×1
currval ×1
foreach ×1
group-by ×1
if-statement ×1
lastinsertid ×1
loops ×1