php - $db->res->prepare 不再工作

标签 php mysql

与我复制的一些代码行作斗争,因为我不知道如何将对象中的字段写入 MySQL。这曾经有效,但在更改字段后,程序现在不再出现在“If true”部分中。当在 false 部分使用 printf($stmt) 或 print_r($stmt) 时,它返回一个空字符串。

感谢任何帮助。

    if ($stmt = $db->res->prepare("INSERT INTO rawdata( timestamp, NestName, NestUpdated, NestCurrentKelvin, " 
         . "NestTargetKelvin, NestTimeToTarget, NestHumidity, NestHeating, NestPostal_code, NestCountry, NestAutoAway, WeatherMain, "   
         . "WeatherDescription, WeatherTempKelvin, WeatherHumidity, WeatherTempMinKelvin, WeatherTempMaxKelvin, "
         . "WeatherPressure, WeatherWindspeed, WeatherCityName) "
         . "VALUES( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"))
 {
    printf("\nIf true");
    $stmt->bind_param('sssiiiisssiissiiiiiis', 
        $NestData['timestamp'],
        $NestData['NestName'],
        $NestData['NestUpdated' ],
        $NestData['NestCurrentKelvin'],
        $NestData['NestTargetKelvin'],
        $NestData['NestTimeToTarget'],
        $NestData['NestHumidity'],
        $NestData['NestHeating'],
        $NestData['NestPostal_code'],
        $NestData['NestCountry'],
        $NestData['NestAutoAway'],
        $NestData['NestManualAway'],
        $NestData['WeatherMain'],
        $NestData['WeatherDescription'],
        $NestData['WeatherTempKelvin'],
        $NestData['WeatherHumidity'],
        $NestData['WeatherTempMinKelvin'],
        $NestData['WeatherTempMinKelvin'],
        $NestData['WeatherPressure'],
        $NestData['WeatherWindspeed'],
        $NestData['WeatherCityName']
    );

    $stmt->execute();
    printf("\n%d Row inserted.\n", $stmt->affected_rows);
    if(mysqli_stmt_errno($stmt) > 0)
    {
        printf("Error Nr.\n", mysqli_stmt_errno($stmt));
        printf("Error  \n",mysqli_stmt_error($stmt));
        $logRow = $logRow . "," . $stmt->affected_rows . "," . mysqli_stmt_error($stmt) . "\n";
    }
    else
    {
        $logRow = $logRow . "," . $stmt->affected_rows . ",No Errors\n";
    }
    $stmt->close();
 }
 else
 {
     printf("\nIf false");
     print_r($stmt);
     printf($stmt);
     printf("\nEnd false");
 };

欢迎任何提示。

最佳答案

将这些行复制到底部的 else 语句中,其中有 printf("\nIf false");

printf("Error Nr.\n", mysqli_stmt_errno($stmt));
printf("Error  \n",mysqli_stmt_error($stmt));

这将告诉您准备失败的原因。然后,根据该错误,您可以进行调整。可能是数据库中的列名称存在问题。

关于php - $db->res->prepare 不再工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33426922/

相关文章:

php - 如何在不使用 INNER JOIN 的情况下连接表?

php - 基于主管表的动态邮件转发

php - 检查字符串是否为图像

php - 是否有类似于 setTimeout() (JavaScript) 的函数用于 PHP?

php - 如何在mysql日期时间列中存储带有时区信息的时间?

python - 字符串解析与数据库查询

php - 带有 PHP 的 Docker Apache - 地址不可用:AH00056:连接到 [::]:80 上的监听器

php - 根据医院ID设置自动增量

mysql - 运行时错误 3001 'Arguments are of the wrong type or out of acceptable range…' 插入 MySQL 数据库

mysql - AdonisJs Mysql 关系无法正常工作!每当我尝试从数据库中获取时都给出空数组