0 голосов
спросил от в категории PHP
Если у вас возникли проблемы с статьей CodeProject, отправьте свой вопрос на форуме в конце статьи. Только тогда автор получит уведомление о вашей проблеме.

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
0 голосов
ответил от
Вам нужно выполнить вставку SQL для каждой строки. Поэтому просто переместите операцию в цикл foreach :
foreach ($tds as $sNodeDetail)  {     $row[] = trim($sNodeDetail->textContent);     $query = "INSERT INTO riser (symbol, vwap, last, bid, ask, volume, markchg, markpct, shares, marketcap, ttmsqz) VALUES ('$row[0]', '$row[1]', '$row[2]', '$row[3]', '$row[4]', '$row[5]', '$row[6]', '$row[7]', '$row[8]', '$row[9]', '$row[10]', '$row[11]')";     if ($conn->query($query) !== TRUE)     {         // Report error here     }     // Or better using a parametrised query     if ($stmt = $conn->prepare("INSERT INTO riser (symbol, vwap, last, bid, ask, volume, markchg, markpct, shares, marketcap, ttmsqz) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"))     {         $stmt->bind_param("ssssssssssss", $row[0], $row[1], $row[2], $row[3], $row[4], $row[5], $row[6], $row[7], $row[8], $row[9], $row[10], $row[11]);         if ($stmt->execute() == FALSE)         {             // Handle error here         }         $stmt->close();     } }
0 голосов
ответил от
$query = "INSERT INTO riser (symbol, vwap, last, bid, ask, volume, markchg, markpct, shares, marketcap, ttmsqz) VALUES ('$aDataTableDetailHTML[0][0]', '$aDataTableDetailHTML[0][1]', '$aDataTableDetailHTML[0][2]', '$aDataTableDetailHTML[0][3]', '$aDataTableDetailHTML[0][4]', '$aDataTableDetailHTML[0][5]', '$aDataTableDetailHTML[0][6]', '$aDataTableDetailHTML[0][7]', '$aDataTableDetailHTML[0][8]', '$aDataTableDetailHTML[0][9]', '$aDataTableDetailHTML[0][10]', '$aDataTableDetailHTML[0][11]')";

Не решение вашего вопроса, но еще одна проблема, с которой вы столкнулись. Никогда не создавайте SQL-запрос, объединяя строки. Рано или поздно вы сделаете это с помощью пользовательских входов, и это откроет дверь для уязвимости с именем «SQL injection», это опасно для вашей базы данных и подверженности ошибкам.
Одиночная цитата в названии и вашем крах программы. Если пользователь вводит такое имя, как «Брайан О'Коннер», это может привести к краху вашего приложения, это уязвимость в SQL-инъекции, и авария является наименьшей из проблем, вредоносного ввода пользователя и продвигается к командам SQL со всеми учетными данными.
$query = "INSERT INTO riser (symbol, vwap, last, bid, ask, volume, markchg, markpct, shares, marketcap, ttmsqz) VALUES ('$aDataTableDetailHTML[0][0]', '$aDataTableDetailHTML[0][1]', '$aDataTableDetailHTML[0][2]', '$aDataTableDetailHTML[0][3]', '$aDataTableDetailHTML[0][4]', '$aDataTableDetailHTML[0][5]', '$aDataTableDetailHTML[0][6]', '$aDataTableDetailHTML[0][7]', '$aDataTableDetailHTML[0][8]', '$aDataTableDetailHTML[0][9]', '$aDataTableDetailHTML[0][10]', '$aDataTableDetailHTML[0][11]')";
# [#^ #]
#SQL Injection # [#^ #]
#SQL Injection Attacks by Example # [#^ #]
#PHP: SQL Injection - Manual # [#^ #]
#SQL Injection Prevention Cheat Sheet - OWASP # [#^ #]
1
$query = "INSERT INTO riser (symbol, vwap, last, bid, ask, volume, markchg, markpct, shares, marketcap, ttmsqz) VALUES ('$aDataTableDetailHTML[0][0]', '$aDataTableDetailHTML[0][1]', '$aDataTableDetailHTML[0][2]', '$aDataTableDetailHTML[0][3]', '$aDataTableDetailHTML[0][4]', '$aDataTableDetailHTML[0][5]', '$aDataTableDetailHTML[0][6]', '$aDataTableDetailHTML[0][7]', '$aDataTableDetailHTML[0][8]', '$aDataTableDetailHTML[0][9]', '$aDataTableDetailHTML[0][10]', '$aDataTableDetailHTML[0][11]')";
# [1#^ #]

Категории

Добро пожаловать на сайт DraftingCode Q&A (ИТ ответы), где вы можете задавать вопросы и получать ответы от других членов сообщества.

Связанных вопросов не найдено

...