无法用php程序更新sql表

w80xi6nr  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(255)

我已经安装了xampp并确保所有服务器都在运行。我对php和sql完全陌生

我配置了一个名为 test 还有一张table叫 sensor .
我添加了一个名为 arduino 使用密码。
请忽略评论

<?php

// Prepare variables for database connection

$dbusername = "arduino";
$dbpassword = "xxx"; 
$server = "localhost"; 

// Connect to your database

$dbconnect = new PDO('mysql:host=localhost;dbname=test;charset=utf8mb4', 'arduino', 'test');

// Prepare the SQL statement

$sql = "INSERT INTO test.sensor (value) VALUES ('".$_GET["value"]."')";    

// Execute SQL statement

// mysql_query($sql);

?>

我想用这个设置从arduino获取数据。在将这个设置连接到arduino之前,我想确保它能够通过传递 http://localhost/write_data.php?value=100 到浏览器。我原以为这会用 id , timestamp 以及 value (of 100) . 它没有。

我跟他有点麻烦 $dbconnect = mysql_pconnect($server, $dbusername, $dbpassword); 因此用 $db = new PDO('mysql:host=localhost;dbname=test;charset=utf8mb4', 'arduino', 'test'); 我也有麻烦 mysql_query($sql); . 所以我现在已经把它注解掉了。
我怎样才能让它工作?我在哪里可以找到mysql替换的易于遵循的文档?
根据答案更新代码

<?php

    $dbusername = "arduino";  
    $dbpassword = "test";  
    $server = "localhost"; 

    $dbconnect = new PDO('mysql:host=localhost;dbname=test;charset=utf8mb4', 'arduino', 'test');

    $stmt = $dbconnect->prepare('insert into sensor(value) values(:val)');
    $stmt->bindParam(':val', $_GET["value"], PDO::PARAM_INT);
    $stmt->execute();
    print "procedure returned $return_value\n"; 

?>
8ehkhllq

8ehkhllq1#

在这个例子中。。必须在查询中绑定get参数
example:-

$servername = "localhost";
            $username = "username";
            $password = "password";
            $dbname = "myDBPDO";

            try {
                $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
                $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                $sql = "SELECT * FROM `$table` WHERE `$fieldname`=:id";
        $stmt = $conn->prepare($sql);
        $stmt->bindParam(':id', $id);
        $stmt->execute();
        $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
    print_r($result);  
            }
            catch(PDOException $e) {
                echo "Error: " . $e->getMessage();
            }
ss2ws0br

ss2ws0br2#

您没有在代码中执行sql语句。尝试执行以下实现:

$db = new PDO('mysql:host=localhost;dbname=rfid_db;charset=utf8mb4', 'username', 'password');

//$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //optional
//$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); //optional

$stmt = $db->prepare('insert into sensor(value) values(:val)');
$stmt->bindParam(':val', $_GET["value"], PDO::PARAM_INT);
$stmt->execute();

对于pdo的详细研究,请参考这里的文档http://php.net/manual/en/pdo.prepared-statements.php

相关问题