Примечание: неопределенная переменная: sql и Fatal error: имя функции должно быть строкой

Я не знаю, что здесь пошло не так.

Шаг 1: Введите имя и фамилию
Шаг 2: Выберите даты
Шаг 3: нажмите на кнопку отправки
Результаты: показывает результаты

Ошибка:

Примечание: неопределенная переменная: sql in
C: \ xampp \ htdocs \ xampp \ prive_tc \ testingphp.php в строке 20

Неустранимая ошибка: имя функции должно быть строкой в
C: \ xampp \ htdocs \ xampp \ prive_tc \ testingphp.php в строке 20

   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<?php

$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("prive_ts", $con);

$sql ("SELECT * from info");

$from = $_get['from']; // or $from = $_get['from'];
$to = $_get['to'];  // or $to = $_get['to'];
$sql .= mysql_query(" WHERE date_of_service between '".$from."' AND '".$to."' ");if (!mysql_query($con,$sql))
{
die('Error: ' . mysql_error($con));
}

?>

<form name="search_form" method="POST" action="testingphp.php">

Search: <input type="text" name="search_box" value="" />
Dates&nbsp; From : <input type="text" name="from"/>
To : <input type="text" name="to"/>
<input type="submit" name="search" value="Look up Patient ...">

</form>

<table width="70%" cellpadding="5" cellspace="5">

<tr>

<td><strong>Care Provider</strong></td>
<td><strong>Patient Name</strong></td>
<td><strong>Date of Time</strong></td>
<td><strong>Time In</strong></td>
<td><strong>Time Out</strong></td>
<td><strong>Remarks</strong></td>
</tr>

<?php while ($row = mysql_fetch_array($query)) { ?>
<tr>
<td><?php echo $row['care_provider']; ?></td>
<td><?php echo $row['patient_name']; ?></td>
<td><?php echo $row['date_of_service']; ?></td>
<td><?php echo $row['time_in']; ?></td>
<td><?php echo $row['time_out']; ?></td>
<td><?php echo $row['remarks']; ?></td>
</tr>
<?php } ?>

</table></body>
</html>

-1

Решение

Давайте тогда просто составим список.

  • Запрос SQL должен быть назначен:

     $sql = "SELECT * FROM .. ";
    
  • Принимая во внимание, что объединение:

     $sql .= mysql_query("...");
    

    нужно разделить:

     $sql .= "WHERE ...";
    

    и вызвал впоследствии:

     $result = mysql_query($sql);
    
  • И $_GET переменная должна быть написана в верхнем регистре.

И это, вероятно, неподходящий совет для вашего уровня опыта, но подумайте над чтением по PDO и связанным параметрам.

2

Другие решения

+ Изменить

$sql ("SELECT * from info");

в

$sql = "SELECT * from info";

И, ради бога, не вставляйте пользовательский ввод в SQL-запрос без проверки. использование mysqli_real_escape_string первый.

1

+ Изменить $sql ("SELECT * from info"); в $sql = "SELECT * from info";

Есть также некоторые ошибки в вашем коде. Это не сработает. Попробуйте что-то вроде этого:

   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<?php

$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("prive_ts", $con);

$sql = "SELECT * from info" ;

$from = $_get['from']; // or $from = $_get['from'];
$to = $_get['to'];  // or $to = $_get['to'];
$sql .= " WHERE date_of_service between '".$from."' AND '".$to."'";

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

?>
1

Вы пропустили = в строке 20
правильный синтаксис: $sql = "SELECT * from info";

и заменить строку 24:

$sql .= mysql_query(" WHERE date_of_service between '".$from."' AND '".$to."' ");

с :

$sql .= " WHERE date_of_service between '".$from."' AND '".$to."' ";

рекомендации:

  • С помощью mysql_real_escape_string($keywords); или же strip_tags($keywords) предотвратить инъекцию sql
  • использование MYSQLI вместо mysql устарела в PHP 5.5
1
$sql ("SELECT * from info");

PHP видит эту переменную как функцию, потому что вы не использовали знак ‘=’ и помещали что-то между кавычками.
Например:

$variable = "Test";
$variable(); // Outputs an error since the value is a string

Вы хотите присвоить строку переменной. Итак, что вы хотите сделать, это:

$sql = "SELECT * from info";
0
По вопросам рекламы [email protected]