2015-01-14 3 views
-1

connect.php:не в состоянии получать данные из базы данных

<?php 
$db = new mysqli('localhost', 'root', '', 'cms'); 
if ($db->connect_errno) { 
    die('Sorry, We are having some problems'); 
} 

function escape($string){ 
    return htmlentities($string,ENT_QUOTES,'UTF-8'); 
} 

?> 

printdata.php:

<?php 
require 'include/connect.php'; 
$cerid = escape($_POST['cerid']); 
$student = escape($_POST['student']); 

if($result = $db->query("SELECT * FROM certificate WHERE name = {$student} ")){ 
    if ($result->num_rows) { 
     $rows =$result->fetch_assoc(); 
     echo $rows['cerid']; 
     echo "<br> {$rows['name']} "; 
     echo $rows['cname']; 
     echo $rows['dname']; 
    } 
} 
?> 
+1

Скорее всего проблема с объемом. –

+1

Ну, во-первых, какая у вас проблема? Вы даже не задали вопрос. Ваша связь в порядке? Вы отлаживали? Вы получаете сообщения об ошибках? – Lee

+0

, когда я использовал $ cerid вместо $ student, который работал ... но теперь –

ответ

1

У вас есть две проблемы:

  1. Вы не квотирование свои ценности. Если вы не используете подготовленное заявление (рекомендуется ...), вы должны процитировать их;
  2. У вас есть потенциальная проблема с внедрением sql. htmlentities() не защищает вас от этого.

Это должно быть что-то вроде:

function escape($string, $mysqli){ 
    return mysqli_real_escape_string($mysqli, $string); 
    // or 
    return $mysqli->real_escape_string($string); 
} 

вызова вашей функции, как:

$cerid = escape($db, $_POST['cerid']); 
// etc. 

и:

if($result = $db->query("SELECT * FROM certificate WHERE name = '{$student}' ")){ 

Хотя подготовленное заявление спасло бы вас от избегая ваших значений.

+1

У нас это есть. 'int' и строки являются * двумя разными животными * вообще ;-) –

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