2013-07-17 3 views
0

У меня есть страница, которая берет SKU из базы данных и создает страницу. Пример URL: http://example.com/index.php?sku=1234567PHP динамическая страница не работает

Когда я загружаю такой URL-адрес, он ничего не показывает - даже таблицу, которую я выдаю с echo. Ниже мой код:

$sku = $_GET['sku']; 
$result = mysqli_query($conn, "SELECT productname, price, producturl, productimg, productdesc, sku FROM table WHERE sku=" . $sku); 
while ($row = mysqli_fetch_array($result)) { 
echo '<h3>test</h3>'; 

      echo '<table width="100%" border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
    <td><h4>'.$row["sku"].'</h4></td> 
    <td><h3>'.$row["productname"].'</h3></td> 
    <td rowspan="2"><img src="'.$row["productimg"].'" width="100%" alt="productimg"/></td> 
    </tr> 
    <tr> 
    <td colspan="2" rowspan="2"><p>'.$row["productdesc"].'</p></td> 
    </tr> 
    <tr> 
    <td><a class="button" href="'.$row["producturl"].'">View Product</a> <a class="alert button" href="">No Match</a> <a class="alert button" href="">Match</a></td> 
    </tr> 
</table>'; 
} 

Я подключен к базе данных и имею <?php и ?> тегов там. Я заметил, в то время, играя с ним, что если удалить эту строку:

while ($row = mysqli_fetch_array($result)) { 

, а также удалить закрытие }, он работает, но не отображает данные - только таблицу. Я не уверен, что здесь происходит.

+0

вы можете попробовать это: $ результат = mysqli_query ($ сопп,«SELECT PRODUCTNAME, цена, producturl, productimg, productdesc, ы из таблицы, где ы = '$ ы'); – Maximus2012

+0

echo mysqli_num_rows ($ result). " Записи найдены ... »; – steven

+2

Ваш код уязвим для ** SQL Injection **, пожалуйста, прочтите следующее: http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection-in-php – Mansfield

ответ

2

Простой. ваш вызов mysqli_query не возвращает никаких записей. Либо записи не найдены, либо есть ошибка. Сделайте свой код немного более надежным.

$sku = $_GET['sku']; 
if ($result = mysqli_query($conn, ...)) { 
    if (mysqli_num_rows($result) == 0) { 
     echo "no skus found"; 
    } else { 
     while ($row = mysqli_fetch_array($result)) { 
      echo '<h3>test</h3>'; 
      ... 
     } 
    } 
} else { 
    echo "something went wrong: ".mysqli_error(); 
} 

(В качестве примечания, пожалуйста, используйте параметрические запросы, вы открываете себя для SQL инъекций сейчас. MySQLi нет волшебной пули против этого, вы должны проверить/дезинфицировать вход.)

+0

Вы смешали Объектно-ориентированный стиль и процедурный стиль – steven

+0

@steven Спасибо, что заметили; исправлено это. –

+0

Привет, используя ваш код, кажется, ничего не делает –

0

Отобразить ошибку mysqli при сбое:

if (!mysqli_query($link, $sql)) { 
    printf("Errormessage: %s\n", mysqli_error($link)); 
} 
+0

Это хорошая идея, однако это не решает проблему. Он просто даст больше информации о проблеме. – pattyd

0

Положить $ sku внутрь кавычек.

<?php 
    $sku = $_GET['sku']; 
    $result = mysqli_query($conn, "SELECT productname, price, producturl, productimg, productdesc, sku FROM table WHERE sku = $sku"); 
    while ($row = mysqli_fetch_array($result)) { 
    echo '<h3>test</h3> 
<table width="100%" border="0" cellspacing="0" cellpadding="0"> 
     <tr> 
     <td><h4>'.$row["sku"].'</h4></td> 
     <td><h3>'.$row["productname"].'</h3></td> 
     <td rowspan="2"><img src="'.$row["productimg"].'" width="100%" alt="productimg"/></td> 
     </tr> 
     <tr> 
     <td colspan="2" rowspan="2"><p>'.$row["productdesc"].'</p></td> 
     </tr> 
     <tr> 
     <td><a class="button" href="'.$row["producturl"].'">View Product</a> <a class="alert button" href="">No Match</a> <a class="alert button" href="">Match</a></td> 
     </tr> 
    </table>'; 
    } 
    ?> 
0

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

<?php 
    $sku = $_GET['sku']; 
     $objConnect = mysql_connect("host address","username","password") or die(mysql_error() . 'this is true death...'); 
    $objDB = mysql_select_db("database"); 
    $result = 'SELECT sku, productname, price, producturl, productimg, productdesc FROM table1 WHERE sku="' . $sku . '"'; 
$result = mysql_query($result); 
while ($row = mysql_fetch_array($result)) { 
    echo '<table width="100%" border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
    <td><h4>'.$row["sku"].'</h4></td> 
    <td><h3>'.$row["productname"].'</h3></td> 
    <td rowspan="2" width="30%"><img src="'.$row["productimg"].'" width="100%" alt="productimg"/></td> 
    </tr> 
    <tr> 
    <td colspan="2" rowspan="2"><p>'.$row["productdesc"].'</p></td> 
    </tr> 
    <tr> 
    <td><a class="button" href="'.$row["producturl"].'">View Product</a> <a class="alert button" href="">No Match</a> <a class="alert button" href="">Match</a></td> 
    </tr> 
</table>'; 
} 
?> 
Смежные вопросы