我使用树莓派和一些充当开关的运动传感器为一组音乐楼梯编写了一个Python脚本,在通过时它们会发出噪音。在我的 MySQL 数据库中,我有两种不同的设置 - 钢琴或鼓,并且根据选择的设置,将运行不同的代码块。
我想知道是否可以创建一个 PHP 按钮来从数据库中进行选择,然后根据按下的 PHP 按钮使 python block 运行?
我尝试了一个简单的 SQL 语句并在 PHP 中连接数据库,但到目前为止还没有执行任何操作。
这适用于运行 Python2.7(我知道我应该升级,但这是与 mariadb 连接的最新版本)、PHP 和 Apache 2 的 Raspberry Pi 3。
#!/usr/local/lib/python2.7/sitepackages
import mysql.connector as mariadb # connect to mysql
import RPi.GPIO as GPIO # GPIO
import pygame.mixer # To make sound
pygame.mixer.init()
```Connect to database
mariadb_connection = mariadb.connect(user='root', password='*****', database='stairs')
cursor = mariadb_connection.cursor()
```GPIO setup
GPIO.setmode(GPIO.BCM)
```Motion sensor setup
GPIO.setup(4, GPIO.IN, GPIO.PUD_UP)
GPIO.setup(17, GPIO.IN, GPIO.PUD_UP)
while True:
cursor.execute("SELECT value FROM settings WHERE key_ = 'currentInstrument'")
settings = cursor.fetchall()
for id in settings:
input_state = GPIO.input(4)
if input_state == False:
if(id==1):
print('GPIO4 Piano')
C1 = pygame.mixer.Sound("piano/C1.wav")
C1.play()
if(id==2):
print('GPIO4 Drum')
drum1 = pygame.mixer.Sound("drum/Drum c1.wav")
drum1.play()
input_state = GPIO.input(17)
if input_state == False:
if(id==1):
print('GPIO17 Piano')
D = pygame.mixer.Sound("piano/D.wav")
D.play()
if(id==2):
print('GPIO17 Drum')
drum2 = pygame.mixer.Sound("drum/Drum d.wav")
drum2.play()
预期的输出应该是,当按下 PHP 按钮时,它应该从数据库中选择 1 或 2,然后依次选择要演奏的乐器
最佳答案
这样的东西应该可以工作(假设 php 按钮位于某个网页中):
HTML/PHP 页面: 运行
该按钮与 php 文件“run.php”相关,如果按下该按钮,页面将重定向到“run.php”。
在“run.php”内启动 python 脚本:
<?php
$command = escapeshellcmd('pathto/script.py');
$output = shell_exec($command);
echo $output;
?>
这将从网页运行 python 脚本
关于php - 如何编写 PHP 按钮来从数据库中选择行并运行 python 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57077647/