J'essaie de stocker les données récupérées dans ma base de données. Il affiche simplement les résultats, donc l'exploration est normale. Mais il y a certainement une erreur dans la définition de la variable et dans sa transmission à mysql-insert. J'obtiens le message "Nouvel enregistrement créé avec succès". Le résultat de la variable est vide et la date existe.
<?php $html = file_get_contents('https://www.marketwatch.com/market-data/us?mod=market-data-center'); $scriptDocument = new DOMDocument(); libxml_use_internal_errors(TRUE); if(!empty($html)){ $scriptDocument->loadHTML($html); libxml_clear_errors(); $scriptDOMXPath = new DOMXPath($scriptDocument); $scriptRow = $scriptDOMXPath->query('//th[starts-with(text(), "ISSUES:")]//following::td[6]');if($scriptRow->length > 0){foreach($scriptRow as $row){echo $row->nodeValue;}} // echo result works $scriptRow = $scriptDOMXPath->query('//th[starts-with(text(), "ISSUES:")]//following::td[6]');if($scriptRow->length > 0){foreach($scriptRow as $row){$row->nodeValue = $nasdaq_dec;}} // defining variable does not work }; $host_name = ''; $database = ''; $user_name = ''; $password = ''; try { $conn = new PDO("mysql:host=$host_name; dbname=$database;", $user_name, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "INSERT INTO `morgenroutine` (date,nasdaq_dec) VALUES (NOW(), '$nasdaq_dec')"; $conn->exec($sql); echo "成功创建新记录"; } catch(PDOException $e) { echo $sql . "<br>" . $e->getMessage(); } $conn = null; ?>
Maintenant, je comprends ! J'ai changé le format en "texte" dans MySQL et j'ai changé la ligne en :
$scriptRow = $scriptDOMXPath->query('//th[starts-with(text(), "ISSUES:")]/following::td[6]');if($scriptRow->length > 0){foreach($scriptRow as $row){$nasdaq_dec = $row->nodeValue;}}