php pdo получает только одно значение из mysql; значение, равное переменной

Я определил переменную $ row_id1 (например $ row_id1 = 1;)

В mysql – столбец с именем Number.

Хотите выбрать столбец Number и если в столбце существует $ row_id, вы хотите получить (выборку, определение) значения. На самом деле хотите проверить, существует ли в столбце Number значение $ row_id.

Что не так с кодом?

$stmt = $db->prepare("SELECT Number FROM 2_1_journal WHERE Number = :Number1"); $stmt->bindParam(':Number1', $row_id1); //value from $_POST $stmt->execute(); $Number1 = $stmt->fetchAll(PDO::FETCH_ASSOC); // seems here something is wrong echo $Number1 .' $Number1<br>'; 

На выходе я получаю Array $ Number1

Как будто простой (глупый) вопрос, но поиск нескольких часов и отсутствие решения

++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++

Обновленный код

Эта часть не связана с проблемой (только для информации)

 require($_SERVER['DOCUMENT_ROOT'] . "/_additionally_protected/session.class.php"); $session = new session(); // Set to true if using https $session->start_session('_a', false); session_regenerate_id(); //require($_SERVER['DOCUMENT_ROOT'].'/_additionally_protected/request_blocker.php'); //slow page load require($_SERVER['DOCUMENT_ROOT'].'/_measure_time_start.php'); require($_SERVER['DOCUMENT_ROOT'].'/_additionally_protected/db_config.php'); header('Content-type: text/html; charset=utf8'); require($_SERVER['DOCUMENT_ROOT'] . "/only_private/blackhole.php"); ini_set('session.bug_compat_warn', 0); ini_set('session.bug_compat_42', 0); 

Это связано с проблемой (здесь я получаю значения от ввода)

 if(get_magic_quotes_gpc()) $row_id1 = htmlspecialchars(stripslashes($_POST['row_id1'])); else $row_id1 = htmlspecialchars($_POST['row_id1']); echo $row_id1 .' row_id1 from $_POST<br>'; 

Подключиться к mysql

 try { $db = new PDO("mysql:host={$dbhost};dbname={$dbname};charset=utf8", $dbuser, $dbpass//, array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); , array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); //echo "Connected to database"; // check for connection } catch(PDOException $ex) { //echo "An Error occured!"; //user friendly message //print "Error!: " . $ex->getMessage() . "<br/>"; //some_logging_function($ex->getMessage()); exit; } 

Здесь я получаю номер последней строки из mysql. Последнее я передаю число + 1 в html скрытое поле iput. Я имею в виду при загрузке страницы, я получаю последний номер. Если пользователь нажимает кнопку, не выполняйте код.

 //fetch last Number to pass to row_id and entry_id if( !$_POST['register'] ) { echo '!$_POST[register] <br>'; //+++++++++++++ now multiple PDO // Select table with query $stmt = $db->query(" SELECT Number FROM 2_1_journal ORDER BY Number DESC LIMIT 1 "); // Set fetching mode $stmt->setFetchMode(PDO::FETCH_ASSOC); // Assign $row as your key to access Table fields foreach ($stmt as $row) : echo $row['Number'] .' $row[Number] On page load (reload) get number of last row in mysql; to pass to Entry ID and rowid<br>'; $_SESSION['last_number_from_mysql'] = $row['Number']; endforeach; }//if( !$_POST['register'] ) { 

Сессия (выше)

Это часть, которая создает для меня проблему // Получает номер из последнего БД для сравнения с идентификатором строки (скрытым). Цель – решить, нужно ли записывать новую строку или обновлять существующие. Код выполняется на $ _POST. Поэтому необходимо определить $ row_id (определенный выше)

 if( $_POST['register'] ) { 

Если пользователь нажимает кнопку только, то выполните код

 echo $row_id1 .' row_id1 before select Number where Number is $row_id1<br>'; 

Это нужно проверить. Я вижу строку row_id1; Это означает, что число получено. И чуть ниже хотите его использовать

 $stmt = $db->prepare("SELECT Number FROM 2_1_journal WHERE Number = :Number1"); $stmt->bindParam(':Number1', $row_id1); $stmt->execute(); echo $Number1 = $stmt->fetchColumn() .' $Number1<br>'; 

Это эхо, только если 2 раза нажмите кнопку

Вот вкладка html

 <input type="tex" name="row_id1" id="row_id1" value=" <?php //if( ($_POST['register']) === 'Save draft' ) { //echo $_POST['row_id1']; //} //else { echo ($_SESSION['last_number_from_mysql'] + 1); //} ?> "> 

Related of "php pdo получает только одно значение из mysql; значение, равное переменной"

Вам нужно использовать функцию выборки в соответствии с вашим желаемым результатом.

  1. Если вам нужен единственный результат, имя столбца никогда не понадобилось:

     echo $Number1 = $stmt->fetchColumn(); 
  2. Если есть много результатов, которые нужно вернуть, не нужно снова использовать имя столбца:

     $numbers = $sth->fetchAll(PDO::FETCH_COLUMN); 

Он вернет массив чисел.

  1. Если вам нужна строка, используйте fetch()
  2. Если вам нужен массив строк, используйте fetchAll()

Пытаться

 echo $Number1['Number'] .'<br>'; 

первое изменение

 $Number1 = $stmt->fetchAll(PDO::FETCH_ASSOC); 

в

 $Number1 = $stmt->fetch(PDO::FETCH_ASSOC); 

так как я считаю, что вы извлекаете только 1 строку.

вы получите номер ur как

 echo $Number1['Number'] 

Dins