与我复制的一些代码行作斗争,因为我不知道如何将对象中的字段写入 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/