2016-10-17 4 views
-3

У меня есть эта проблема:У меня есть эта головная боль с 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 
} 
+0

отладки кода с 'var_dump' или фактический отладчик. По крайней мере, проверяйте переменные, которые используете. – PeeHaa

+0

Вы называете функцию ???? – Karthi

+1

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

ответ

0

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

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

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

+0

Он конкатенирует вне строки, выполняя '$ a = 'lorem ipsum'. $ dolor. «sit amet», что вполне приемлемо – Ben

+1

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

+0

И на mysql при представлении строк вы используете одиночную кавычку 'вместо двойная кавычка « – Phiter

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>'; 
} 

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

+0

Не помогло, но спасибо – phpWarrior

+0

Я знаю это. Но спасибо за совет. – phpWarrior

+0

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

0

Вашего имени Argument $lastname & используется переменная $lastnem имя не такое же.

+0

Вот почему «Назвиско» получает неопределенное значение , – mamun0024

+0

Это то же самое в моем скрипте Я использую имена польских шрифтов, но не символы – phpWarrior

0

попробовать это:

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

печатает на экране: 1 – phpWarrior

+0

Если я использую echo $ row [0]; Отпечатки, отмеченные – phpWarrior

+0

Извините $ row [1]; ничего не выводит – phpWarrior

Смежные вопросы