Проблема синтаксиса PHP и SQL

У меня возникают проблемы с битом кода (должен быть простым). Я получаю информацию из формы и пытаюсь отобразить записи в базе данных, соответствующие спецификациям формы. Я думаю, что мой HTML правильный, и моя проблема заключается в PHP. Вот мой код, в котором мне нужна помощь:

<?php $submit = @$_POST['submit']; $gender = $_POST['gender']; $hair = $_POST['hair']; $height = $_POST['height']; $body = $_POST['body']; if ($submit){ //open database $connect = mysql_connect("xxxx", "xxxx", "xxxx") or die("Couldnt Connect to Server"); mysql_select_db("xxxx") or die("Couldnt find database"); $query = mysql_query("SELECT * FROM `table` WHERE `gender`='$gender' AND `hair`='$hair' AND `height`='$height' AND `body`='$body'"); $query_run = mysql_query($query); if ($query_run = mysql_query($query)) { while ($query_row = mysql_fetch_assoc($query_run)) { $pic = $query_row['picture']; }; }; }; ?> 

Это самостоятельная страница <form action='thispage.php' method='post'> . Позже вниз страница в пустом пространстве, где я собираюсь эхо $ pic.

Правильно ли этот метод / лучший способ сделать это? Если потребуется, я отправлю код для всей страницы. Сейчас это всего 75 строк.

И прежде, чем мне сообщают, что я должен использовать SQLi, сейчас это скорее доказательство концепции, и что еще более важно, я не знаю, как внести изменения с SQL на SQLi.

Внутри формы есть только варианты, а не ввод текста (если это имеет значение)

Solutions Collecting From Web of "Проблема синтаксиса PHP и SQL"

Вот как я буду делать это с использованием современных библиотек

 // check that all required POST parameters are present if (isset($_POST['submit'], $_POST['gender'], $_POST['hair'], $_POST['height'], $_POST['body'])) { // create DB connection $pdo = new PDO('mysql:host=localhost;dbname=xxxx;charset=utf8', 'xxxx', 'xxxx'); // set error mode and use real prepared statements if possible $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); // prepare an SQL statement with parameter placeholders // I changed the * to just `picture` as that's all you were using in your OP $stmt = $pdo->prepare('SELECT `picture` FROM `table` WHERE `gender` = ? AND `hair` = ? AND `height` = ? AND `body` = ?'); // execute with the POST parameters $stmt->execute(array( $_POST['gender'], $_POST['hair'], $_POST['height'], $_POST['body'] )); // load all "picture" results into an array $pics = array(); while ($pic = $stmt->fetchColumn()) { $pics[] = $pic; } } 
 $query = mysql_query("SELECT * FROM `table` WHERE `gender`='$gender' AND `hair`='$hair' AND `height`='$height' AND `body`='$body'"); $query_run = mysql_query($query); if ($query_run = mysql_query($query)) { while ($query_row = mysql_fetch_assoc($query_run)) { $pic = $query_row['picture']; }; }; 

должно быть

  $query = "SELECT * FROM `table` WHERE `gender`='$gender' AND `hair`='$hair' AND `height`='$height' AND `body`='$body'"; if ($query_run = mysql_query($query)) { while ($query_row = mysql_fetch_assoc($query_run)) { $pic = $query_row['picture']; }; }; 

$ query = mysql_query ("SELECT * FROM` table ………

$ query_run = mysql_query ($ query); дополнительный