0 голосов
спросил от в категории PHP
$ row - это одномерный массив. Поскольку элементы в этом массиве являются строками, вы можете получить доступ к символам элементов, используя оператор [] . Но для этого требуется передать числовой индекс вместо индекса строки, как указано сообщением об ошибке.

Почему вы хотите упаковать возвращенные элементы строки в список? Это не имеет никакого смысла. Так же использует array () для элементов:
// These are the values which are strings $base_price_value = $row['base_price']; $outlying_price_value = $row['outlying_price']; // Would this makes sense? list($base) = array($base_price_value);
В любом случае вы создаете гораздо более сложную копию уже существующего массива $ row .

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
0 голосов
ответил от
Учитесь правильно указывать свой код, он показывает свою структуру и помогает читать и понимать. Это также помогает выявлять ошибки структур.
<?php include 'database.php'; $pdo = Database::connect(); try{   $collhub = "bet";   $delhub = "jnb";   echo $collhub;   echo $delhub;   echo "<br>";   $sql = "SELECT * FROM `new_ice_price_table` WHERE collection_town_code = '$collhub' AND delivery_town_code = '$delhub'";   $result = $pdo->query($sql);   if($result->rowCount() > 0){     //echo "<table class='table table-striped table-bordered sortable'>";     while($row = $result->fetch()){       //print_r($row);       //list($base) = array($row['base_price']);       //list($outlying) = array($row['outlying_price']);       list($outlying, $base) = (array($row['outlying_price'] ['base_price']));       echo "<br>";       echo $base;       echo "<br>";       echo $outlying;     }     echo "</table></br>";     unset($result);   } else{     echo "No records matching your query were found.";   } } catch(PDOException $e){   die("ERROR: Could not able to execute $sql. " . $e->getMessage()); } ?>

Редакторы профессионального программиста имеют эту функцию и другие, такие как сопоставление скобок и подсветка синтаксиса.
<?php include 'database.php'; $pdo = Database::connect(); try{   $collhub = "bet";   $delhub = "jnb";   echo $collhub;   echo $delhub;   echo "<br>";   $sql = "SELECT * FROM `new_ice_price_table` WHERE collection_town_code = '$collhub' AND delivery_town_code = '$delhub'";   $result = $pdo->query($sql);   if($result->rowCount() > 0){     //echo "<table class='table table-striped table-bordered sortable'>";     while($row = $result->fetch()){       //print_r($row);       //list($base) = array($row['base_price']);       //list($outlying) = array($row['outlying_price']);       list($outlying, $base) = (array($row['outlying_price'] ['base_price']));       echo "<br>";       echo $base;       echo "<br>";       echo $outlying;     }     echo "</table></br>";     unset($result);   } else{     echo "No records matching your query were found.";   } } catch(PDOException $e){   die("ERROR: Could not able to execute $sql. " . $e->getMessage()); } ?>
# [
$sql = "SELECT * FROM `new_ice_price_table` WHERE collection_town_code = '$collhub' AND delivery_town_code = '$delhub'";
#]
#ultraedit # [#^ #]
$sql = "SELECT * FROM `new_ice_price_table` WHERE collection_town_code = '$collhub' AND delivery_town_code = '$delhub'";

Не решение вашего вопроса, но еще одна проблема, которую вы имеете.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских входов, и это откроет дверь для уязвимости с именем «SQL injection», это опасно для вашей базы данных и подверженности ошибкам.
Одиночная цитата в названии и вашем крах программы. Если пользователь вводит такое имя, как «Брайан О'Коннер», это может привести к краху вашего приложения, это уязвимость в SQL-инъекции, и авария является наименьшей из проблем, вредоносного ввода пользователя и продвигается к командам SQL со всеми учетными данными.
#SQL injection - Wikipedia # [#^ #]
#SQL Injection # [#^ #]
#SQL Injection Attacks by Example # [#^ #]
1
<?php include 'database.php'; $pdo = Database::connect(); try{   $collhub = "bet";   $delhub = "jnb";   echo $collhub;   echo $delhub;   echo "<br>";   $sql = "SELECT * FROM `new_ice_price_table` WHERE collection_town_code = '$collhub' AND delivery_town_code = '$delhub'";   $result = $pdo->query($sql);   if($result->rowCount() > 0){     //echo "<table class='table table-striped table-bordered sortable'>";     while($row = $result->fetch()){       //print_r($row);       //list($base) = array($row['base_price']);       //list($outlying) = array($row['outlying_price']);       list($outlying, $base) = (array($row['outlying_price'] ['base_price']));       echo "<br>";       echo $base;       echo "<br>";       echo $outlying;     }     echo "</table></br>";     unset($result);   } else{     echo "No records matching your query were found.";   } } catch(PDOException $e){   die("ERROR: Could not able to execute $sql. " . $e->getMessage()); } ?>
# [1
$sql = "SELECT * FROM `new_ice_price_table` WHERE collection_town_code = '$collhub' AND delivery_town_code = '$delhub'";
#]
1#ultraedit # [1#^ #]
1#SQL injection - Wikipedia # [1#^ #]
0 голосов
ответил от
Я бы предположил, что вам действительно нужно:
list($outlying, $base) = (array($row['outlying_price'], $row['base_price']));

, как показано на
list($outlying, $base) = (array($row['outlying_price'], $row['base_price']));
# [1 ## ##].

Категории

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

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

...