У меня эта головная боль с PHP и MySQL

#php #mysql

#php #mysql

Вопрос:

У меня такая проблема:

 function search_by_name($mysql, $name, $lastname)
{
    $query = 'SELECT idKlienci FROM Klienci WHERE Imie = "' . $name . '" 
              AND Nazwisko = "' . $lastnem . '"';
    $result = $mysql->query($query);
    $row = mysqli_fetch_array($result); // I want to get the ID' of table `Klienci1`
    // and here i don't know how many dimentions have this array
    echo $row[0][0]; // prints nothing
}
 

Комментарии:

1. Отладьте свой код с var_dump помощью или фактического отладчика. По крайней мере, проверьте переменные, которые вы используете.

2. вы вызываете функцию????

3. Проверьте вывод var_dump($row) непосредственно перед $row[0][0]

4. переменные, которые я использую, отличаются от того, что я написал, потому что я поляк и использую имена переменных polisz. я изменил имена, чтобы вы, ребята, могли лучше меня понять.

5. array(2) {[0]=> string(1) «1» [«idKlienci»]=> string(1) «1» } 1

Ответ №1:

$lastnem != $lastname

Поэтому измените запрос, чтобы использовать правильное имя переменной

 $query = 'SELECT idKlienci 
            FROM Klienci 
            WHERE Imie = "' . $name . '" 
              AND Nazwisko = "' . $lastname . '"';
 

Чтобы облегчить чтение такого кода, вы также можете использовать тот факт, что переменные в строке, заключенной в двойные кавычки, автоматически расширяются. Что облегчает чтение и, следовательно, отладку.

 $query = "SELECT idKlienci 
            FROM Klienci 
            WHERE Imie = '$name' 
              AND Nazwisko = '$lastname'";

$result = $mysql->query($query);

// use mysqli_fetch_assoc() then you get only one assoc array
// so you can use named parameters to the array.
// the names will match the column names in the table

//$row = mysqli_fetch_array($result);
// also mysqli_fetch_assoc() only returns one row at a time
$row = mysqli_fetch_assoc($result);

// a row is always one dimensional so do 
echo $row['id']; 
 

Поэтому, если у вас есть более одной строки в результирующем наборе вашего запроса, вы должны получить результаты в цикле

 $result = $mysql->query($query);

while ( $row = mysqli_fetch_assoc($result)) { 
    echo $row['id'] . '<br>'; 
}
 

Теперь вы должны увидеть обе строки

Комментарии:

1. Смотрите Мой исправленный ответ о вашей другой проблеме

2. Да, но как перемещаться по строкам??

3. Я снова внес изменения в свой ответ

4. имена переменных предназначены только для вас, ребята, в моем скрипте все совпадает с пространством имен

5. Пожалуйста, помните, что мы можем комментировать только то, что мы видим в вашем вопросе. Если вы случайно добавите ошибки, не скопировав / вставив реальный код, мы будем считать, что если мы увидим ошибку, это ошибка

Ответ №2:

MYSQL не использует двойные кавычки для строк, он использует простые кавычки:

 $query = "SELECT idKlienci FROM Klienci WHERE Imie = '$name' AND Nazwisko = '$lastname'";
 

Вы также можете добавлять переменную непосредственно в строки PHP, когда используете двойные кавычки, без необходимости их объединения.

Комментарии:

1. Он выполняет конкатенацию вне строки $a = 'lorem ipsum ' . $dolor . ' sit amet' , что вполне приемлемо

2. Да, но во внутренней строке используются двойные кавычки. Его запрос в основном таков: $query = 'SELECT idKlienci FROM Klienci WHERE Imie = "$name" AND Nazwisko = "$lastnem"';

3. А в mysql при представлении строк вы используете одинарную кавычку ‘ вместо двойной кавычки »

Ответ №3:

Ваше имя аргумента $lastname и $lastnem имя используемой переменной не совпадают.

Комментарии:

1. Вот почему ‘Nazwisko’ получает неопределенное значение.

2. В моем скрипте то же самое, я использую польские имена, но не символы

Ответ №4:

попробуйте это :

  $row = mysqli_fetch_array($result); 
    echo $row[0];
 

Комментарии:

1. выводит на экран: 1

2. Если я использую echo $row[0]; печатает примечание

3. извините $row[1]; ничего не печатает

4. попробуйте print_r($row);