У меня есть PHP SQL запрос, который выглядит следующим образом:PHP SQL в операторе с условием И
$search = mysql_query("SELECT * FROM `data` WHERE (`state` IN ($userStr)) AND ('Scholarship Type' LIKE '%$stype%')")
$ userstr представляет собой массив состояний, которые получают выбранные конечным пользователем в окошке. Эта часть работает нормально, но когда я представляю следующее условие, которое является стипендией, это не сработает.
Вот полный код:
<html>
<head>
<link rel="stylesheet" type="text/css" href="results.css">
</head>
</html>
<?php
$state = $_POST['state'];
$stype = $_POST['stype'];
$connection = mysql_connect('198.71.225.63:3306', 'newmslsuper', 'blank'); //The Blank string is the password
mysql_select_db('msl_data');
if(isset($_POST['col'])){
$state1 = $_POST['col'];
}
$userStr = implode(',', $state1);
$search = mysql_query("SELECT * FROM `data` WHERE (`state` IN ($userStr)) AND ('Scholarship Type' LIKE '%$stype%')");
$count=mysql_num_rows($search);
if ($count==0) {
echo 'Sorry your search returned no results. Please try again.';
}
else {
$fields_num1 = mysql_num_fields($search);
echo "<table><tr>";
// printing table headers
for($i=0; $i<$fields_num1; $i++)
{
$field1 = mysql_fetch_field($search);
echo "<th>{$field1->name}</th>";
}
echo "</tr>\n";
// printing table rows
while($row1 = mysql_fetch_row($search))
{
echo "<tr>";
// $row is array... foreach(..) puts every element
// of $row1 to $cell1 variable
foreach($row1 as $cell1)
echo "<td>$cell1</td>";
echo "</tr>\n";
}
}
mysql_close(); //Make sure to close out the database connection
?>
'mysql_ *' функции устарели (и удаляются в PHP7), Я предлагаю использовать PDO как альтернативу (googling дает множество примеров того, как его использовать). Кроме того: ваш код уязвим для SQL-инъекций, либо использует подготовленные инструкции, либо выполняет надлежащую проверку данных, предоставленных пользователем (по крайней мере, избегая). – ccKep
[Ваш скрипт находится под угрозой для SQL Injection Attacks.] (Http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –
Пожалуйста, [остановите использование mysql_ * 'functions] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php). [Эти расширения] (http://php.net/manual/en/migration70.removed-exts-sapis.php) были удалены в PHP 7. Узнайте о [подготовленном] (http://en.wikipedia.org/ wiki/Prepared_statement) для [PDO] (http://php.net/manual/en/pdo.prepared-statements.php) и [MySQLi] (http://php.net/manual/en/mysqli.quickstart .prepared-statements.php) и подумайте над использованием PDO, [это действительно довольно легко] (http://jayblanchard.net/demystifying_php_pdo.html). –