Điểm:-1

Làm cách nào để chọn dữ liệu từ mysql bằng tập lệnh bash và chuyển nó sang php?

lá cờ in

Đây là những gì tôi đang cố gắng bây giờ

Trong PHP tôi đang chạy đoạn mã sau:

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

print_r($output);

Đó là gọi tập lệnh Bash sau:

khai báo -A mảng == $(sudo mysql -u root -h localhost -e "USE mydb; CHỌN * TỪ người dùng")

cho tôi trong "${arr[@]}"
làm
lặp lại "$i"
xong

Php đang in một mảng trống, có gì sai ở đây?

lá cờ hr
Tập lệnh của bạn dường như không có shebang - bạn có chắc là php thậm chí còn diễn giải nó bằng bash không? Chính xác thì bạn mong đợi `khai báo -A arr == $( ...)` để làm gì? đầu ra của lệnh mysql của bạn có phù hợp để gán cho một mảng *kết hợp* không? Trong mọi trường hợp, phép gán mảng sẽ giống như `arr=( ... )`. Tại sao bạn đặt nội dung vào một mảng, chỉ để lặp lại nó? Bạn đã kiểm tra tập lệnh **bên ngoài** của php chưa?
lá cờ cn
Tại sao bạn làm điều này bằng BASH mà không phải PYTHON? BY FAR dễ dàng hơn
Iosef avatar
lá cờ in
Đây là cách tập lệnh bash của tôi bây giờ trông như thế nào #!/bin/bash khai báo -a mảng = $(sudo mysql -u root -h localhost -e "SỬ DỤNG mydb; CHỌN * TỪ người dùng") cho tôi trong "${arr[@]}" làm lặp lại "$i" xong Tôi mới sử dụng Ubuntu, tôi không chắc chắn cách kiểm tra nó bên ngoài PHP. Điều tôi muốn làm là lấy thông tin từ mysql và trả lại cho PHP
Iosef avatar
lá cờ in
Sau khi truy xuất điều này, các tập lệnh bash cũng sẽ chịu trách nhiệm tạo các thư mục trong var/www/mysite dựa trên quỹ nào trong cơ sở dữ liệu. Tôi muốn giữ trang web của mình với 755 và cũng không muốn cấp quyền ghi cho máy chủ web, đó là lý do tại sao tôi làm tất cả điều này trong BASH
Iosef avatar
lá cờ in
Đây là những gì tôi nhận được bên ngoài php: ./createinstanceinfolder.sh: dòng 7: khai báo: `=': không phải là định danh hợp lệ ./createinstanceinfolder.sh: dòng 7: khai báo: `5': không phải là định danh hợp lệ ./createinstanceinfolder.sh: dòng 7: khai báo: `111111111111': không phải là mã định danh hợp lệ ./createinstanceinfolder.sh: dòng 7: khai báo: `[email protected]': không phải là định danh hợp lệ
Điểm:1
lá cờ in

Tôi tài trợ đúng cú pháp là:

#!/bin/bash

set -f # vô hiệu hóa toàn cầu
IFS=$'\n' # đặt dấu tách trường thành NL (chỉ)
arr=($(sudo mysql -u root -h localhost -e "SỬ DỤNG mydb; CHỌN * TỪ người dùng"))
 
cho tôi trong "${arr[@]}"
làm
   lặp lại "$i"
xong

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.