Score:-1

จะเลือกข้อมูลจาก mysql โดยใช้ bash script แล้วส่งต่อไปยัง php ได้อย่างไร?

ธง in

นี่คือสิ่งที่ฉันกำลังพยายามอยู่ตอนนี้

ใน PHP ฉันใช้ sript ต่อไปนี้:

exec('/home/user1/createinstanceinfolder.sh', $output, $return_var);

print_r($เอาท์พุท);

ซึ่งเรียกสคริปต์ Bash ต่อไปนี้:

ประกาศ -A arr == $(sudo mysql -u root -h localhost -e "USE mydb; SELECT * FROM users")

สำหรับฉันใน "${arr[@]}"
ทำ
เสียงสะท้อน "$i"
เสร็จแล้ว

Php กำลังพิมพ์อาร์เรย์ว่าง เกิดอะไรขึ้นที่นี่

hr flag
สคริปต์ของคุณดูเหมือนจะไม่มี shebang - คุณแน่ใจหรือว่า php ตีความด้วย bash? คุณคาดหวังให้ `declare -A arr == $( ...)` ทำอะไรกันแน่? ผลลัพธ์ของคำสั่ง mysql ของคุณเหมาะสมสำหรับการกำหนดให้กับอาร์เรย์ *associative* หรือไม่ ไม่ว่าในกรณีใด การกำหนดอาร์เรย์ควรมีลักษณะดังนี้ `arr=( ... )` เหตุใดคุณจึงใส่ข้อมูลลงในอาร์เรย์เพียงเพื่อสะท้อนกลับออกมา คุณทดสอบสคริปต์ **ภายนอก** ของ php หรือไม่
cn flag
ทำไมคุณถึงทำสิ่งนี้โดยใช้ BASH ไม่ใช่ PYTHON BY FAR ได้ง่ายขึ้น
Iosef avatar
in flag
นี่คือลักษณะสคริปต์ทุบตีของฉันตอนนี้ #!/bin/bash ประกาศ -a arr = $(sudo mysql -u root -h localhost -e "USE mydb; SELECT * FROM users") สำหรับฉันใน "${arr[@]}" ทำ เสียงสะท้อน "$i" เสร็จแล้ว ฉันใหม่ใน Ubuntu ฉันไม่แน่ใจว่าจะทดสอบนอก PHP ได้อย่างไร สิ่งที่ฉันต้องการทำคือการดึงข้อมูลจาก mysql และส่งกลับไปที่ PHP
Iosef avatar
in flag
หลังจากเรียกข้อมูลนี้แล้ว สคริปต์ทุบตีจะต้องรับผิดชอบในการสร้างโฟลเดอร์ใน var/www/mysite ตามกองทุนในฐานข้อมูล ฉันต้องการเก็บ mysite ด้วย 755 และไม่ต้องการให้สิทธิ์ในการเขียนแก่เว็บเซิร์ฟเวอร์ นั่นคือเหตุผลที่ฉันทำทั้งหมดนี้ใน BASH
Iosef avatar
in flag
นี่คือสิ่งที่ฉันได้รับนอก php: ./createinstanceinfolder.sh: บรรทัด 7: ประกาศ: `=': ไม่ใช่ตัวระบุที่ถูกต้อง ./createinstanceinfolder.sh: บรรทัดที่ 7: ประกาศ: `5': ไม่ใช่ตัวระบุที่ถูกต้อง ./createinstanceinfolder.sh: บรรทัดที่ 7: ประกาศ: `111111111111': ไม่ใช่ตัวระบุที่ถูกต้อง ./createinstanceinfolder.sh: บรรทัดที่ 7: ประกาศ: `[email protected]': ไม่ใช่ตัวระบุที่ถูกต้อง
Score:1
ธง in

ฉันให้ทุนกับไวยากรณ์ที่ถูกต้องคือ:

#!/bin/bash

set -f # ปิดการใช้งาน globbing
IFS=$'\n' # ตั้งค่าตัวคั่นฟิลด์เป็น NL (เท่านั้น)
arr=($(sudo mysql -u root -h localhost -e "USE mydb; SELECT * FROM users"))
 
สำหรับฉันใน "${arr[@]}"
ทำ
   เสียงสะท้อน "$i"
เสร็จแล้ว

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา