2016-05-09 2 views
0

Я пытаюсь вытащить случайный вопрос из одной из моих таблиц и отобразить его в HTML. Дело в том, чтобы пользователь вставлял свою информацию в форму, отвечал на случайный вопрос, который появляется, и отправлял форму, которая будет хранить информацию о пользователях вместе с вопросом, который они задавали, и их ответом. Кажется, я не могу задать вопрос в своем HTML, и я не уверен, как это исправить. Еще новичок в mySQL.Извлечь случайные данные из mySQL

Код:

<?php 

define('DB_NAME', 'db'); 
define('DB_USER', 'admin'); 
define('DB_PASSWORD', 'password'); 
define('DB_HOST', 'localhost'); 

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 

if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db('db', $link); 

$db_selected = mysql_query("SELECT Question FROM QuestionDB ORDER BY RAND() LIMIT 1"); 

if (!$db_selected) { 
    die('Cant use ' . DB_NAME . ': ' . mysql_error()); 
} 

    if(isSet($_POST['submit'])) { 

    $fname = $row['f_name']; 
    $lname = $row['l_name']; 
    $email = $row['email']; 
    $question = $row['question']; 
    $answer = $row['answer']; 

$sql = "INSERT INTO StudentDB VALUE (NULL,'$fname','$lname','$email','$question','$answer')"; 

if (!mysql_query($sql)) { 
    die('Error: ' . mysql_error()); 
} 

echo 'Thank you, your information has been sent'; 
} 
else{ 
echo' 

<!DOCTYPE HTML> 
<html lang="en"> 

<head> 

</head> 

<body> 


<form id = "myForm" method="POST"> 

<div class="col-sm-6" > 
<h5><b>First Name: </b><br/><input type="text" name="f_name" size="70" required></h5> <br/> 
<h5><b> Last Name: </b><br/><input type="text" name="l_name" size="70" required></h5> <br/> 
</div> 
<div class="col-sm-6" > 
<h5><b>Email: </b><br/><input type="text" name="email" required></h5><br/> 
</div> 

<div class="col-sm-12" > 
<br/><br/> Question: ' .$row["Question"]. ' 
</div> 


<div class="col-sm-12" > 
<br/><br/> 
<h3><b>Answer:</b></h3> 
    <textarea maxlength="500" name="comment" id="comment"></textarea><br/> 
    </div> 

<div class="col-sm-6" > 
<input type="submit" name="submit" value="Submit"> 
</div> 
</form> 

</body> 
</html>'; 
} 
?> 
+1

Пожалуйста, не используйте [расширение базы данных mysql_'] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php), это устарел (ушел навсегда в PHP7) Специально, если вы просто изучаете PHP, потратьте свои силы на изучение расширений базы данных «PDO». [Начать здесь] (http://php.net/manual/en/book.pdo.php) – RiggsFolly

+1

Ваш скрипт находится под угрозой [SQL Injection Attack] (http://stackoverflow.com/questions/60174/how -can-i-prevent-sql-injection-in-php) Посмотрите, что случилось с [Little Bobby Tables] (http://bobby-tables.com/) Даже [если вы избегаете ввода, его небезопасно!] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) – RiggsFolly

+1

Может быть, вам нужно что-то принести? – mustaccio

ответ

1

На стороне записки работает ORDER BY RAND() не является хорошей идеей. Он работает для генерации случайного результата, но он добавляет много накладных расходов, что приводит к длительным нагрузкам. Если вы начнете получать более 100 записей, вы можете увидеть, что это действительно замедляет запросы MySQL и приводит к длительному времени ожидания байтов в первый байт сервером. См. Здесь: http://www.titov.net/2005/09/21/do-not-use-order-by-rand-or-how-to-get-random-rows-from-table/

+0

Спасибо, я посмотрю на это. – Ken

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