#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);