2016-12-15 5 views
-2

Я пытаюсь простой поиск из базы данных MySQL. Мне не повезло с учебниками, которые я читал, большинство из них пытаются сделать что-то намного сложнее, и я не могу сузить код!Поиск данных в MySQL

Я считаю, что у меня есть база данных, работающая, поскольку она подключается к ней без ошибок. Однако я не могу получить код правильно, это то, что я получил до сих пор ... Я пытаюсь получить firstname из базы данных, ссылаясь на lastname. В таблице 5 строк.

<?php 
$servername = 'localhost'; 
$username = 'root'; 
$password = 'root'; 
$dbname = "shipping"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT firstname WHERE lastname = 'Barack' FROM MyGuests"; 

{ 
    echo "Name: ".$rows['firstname']."<br/>"; 

} 

$conn->close(); 
?> 
+1

'ИЗ MyGuests' находится в неправильном месте в запросе – Mihai

+5

вы не выполнили какой-либо SQL в коде. –

+0

Проверьте запрос на вкладке SQL phpmyadmin SQL, чтобы убедиться, что вы получаете нужные результаты, это очень помогает мне. Затем добавьте '$ result = mysqli_query ($ conn, $ sql);' выполнить в вашем php-скрипте – bbruman

ответ

2

Есть несколько вещей, которые здесь не так:

  1. Синтаксис запроса неверен.
  2. Необходимо выполнить выполнить запрос. Все, что вы делаете в данный момент, назначает его как строку переменной.

Update следующим образом:

$result = $conn->query('SELECT firstname FROM MyGuests WHERE lastname = \'Barack\''); 

while($guest = $result->fetch_object()) 
{ 
    echo $guest->firstname.'<br />'; 
} 

Обратите внимание на использование query() и fetch_object().

+0

Вы могли бы сэкономить несколько нажатий клавиш '' SELECT firstname FROM MyGuests WHERE lastname = 'Barack' '';-) почему избежать кавычек? –

+0

@ Fred-ii- Сила привычки и стиль кодирования. Я всегда нахожу одиночные кавычки чище (странно, я знаю), но только мой стиль. – BenM

+0

Нет ничего плохого в стиле ;-) –

1

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

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "shipping"; 

// Create connection 
$conn = mysqli_connect($servername, $username, $password, $dbname); 
// Check connection 
if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 

$sql = "SELECT firstname FROM MyGuests WHERE lastname = 'Barack'"; 
$result = mysqli_query($conn, $sql); 


while($row = mysqli_fetch_array($result)){ 
    echo $row['firstname'] ; 
} 
?> 

ИЛИ вы можете попробовать использовать объектно-ориентированную концепцию

<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "shipping"; 

// Create connection 
$conn = mysqli_connect($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$sql = "SELECT firstname FROM MyGuests WHERE lastname = 'Barack'"; 
$result = $conn->query($sql); 


while($row = $result->fetch_assoc()) { 
    echo $row['firstname'] ; 
} 
$conn->close(); 
?> 
+0

Почему бы не сохранить OO-характер кода, который использовал OP? – BenM

+0

@BenM в оба конца добавлен. – Faisal

+0

Первый фрагмент, который вы опубликовали, не создает объект MySQLi. Он по-прежнему подключается через процедурные средства. – BenM

-2

Если вам нужно найти не строгое совпадение (имена, как 'ABarack' или «Baracka '), используйте подстановочные знаки:

SELECT firstname FROM MyGuests WHERE lastname like '%Barack%' 
+2

Нет, это не проблема. См. Другие ответы. – BenM

0

Ваш код выглядит в основном хорошим за исключением Я вижу по крайней мере 3 проблемы: 1) Ваш SQL неверен. Вы бы это знали, если бы вы проверили результат своего запроса. 2) В вашем коде фактически не используется SQL-код для выполнения любого запроса. 3) После выполнения запроса вы не получаете никаких записей из своего результата.

Как об этом:

$servername = 'localhost'; 
$username = 'root'; 
$password = 'root'; 
$dbname = "shipping"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT firstname FROM MyGuests WHERE lastname = 'Barack'"; 
// you have to actually run a query with your sql and check if it works 
if ($result = $conn->query($sql)) { 
    // you may have more than one record with a matching last name so you loop 
    while ($myrow = $result->fetch_array(MYSQLI_ASSOC)) { 
     echo "Name: " . $myrow["firstname"] . "</br>"; 
    } 
} else { 
    // something didn't work. NOTE: you shouldn't output errors on a production machine 
    // write a log instead or something 
    printf("Error: %s\n", $conn->error); 
} 

$conn->close(); 
Смежные вопросы