Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP搜索在trim上可能有错误_Php_Mysql_Forms - Fatal编程技术网

PHP搜索在trim上可能有错误

PHP搜索在trim上可能有错误,php,mysql,forms,Php,Mysql,Forms,我试图使用$PHP_SELF从表单中收集值,并在同一页面上返回结果。如果这很重要的话,页面本身就是一个PHP页面 我似乎看不清我犯的错误。我使用的错误处理程序告诉我错误在第22行(带有$searchTerm=trim($name);)但我怀疑它可能在php命令的下面,尽管我尝试过各种组合,包括注释、剥离和减少内容,等等,但在初始加载时,我从未获得页面,请不要在第22行(页面查询部分的开始)上给出错误。如果我将表单放在查询中所有php的前面,我可以看到表单,但仍然存在错误。如果我把表单放在查询下面

我试图使用$PHP_SELF从表单中收集值,并在同一页面上返回结果。如果这很重要的话,页面本身就是一个PHP页面

我似乎看不清我犯的错误。我使用的错误处理程序告诉我错误在第22行(带有$searchTerm=trim($name);)但我怀疑它可能在php命令的下面,尽管我尝试过各种组合,包括注释、剥离和减少内容,等等,但在初始加载时,我从未获得页面,请不要在第22行(页面查询部分的开始)上给出错误。如果我将表单放在查询中所有php的前面,我可以看到表单,但仍然存在错误。如果我把表单放在查询下面,我就看不到表单

奇怪的是,表单工作得非常完美。而且,在点击提交按钮后,我没有显示错误,只显示正确的结果。我想错误可能在于我如何封装(或不封装)它的查询处理部分,但在这一点上,我看不到它。我从这个网站上的几个问题和通过谷歌搜索找到的教程中总结了这一点。所以我觉得命令是正确的,我只是不明白为什么我会显示错误

这是代码的最新版本,它的错误与我在其他方面所做的尝试完全相同。PHP的整个部分,从$searchterm到mysqli close,是否应该用括号括起来?我在调用初始if语句上方的conn文件。这是两个功能完全正确的页面的组合——我在表单操作中使用了另一个页面的名称search.php。不知何故,把它们结合起来会让事情变得非常非常糟糕

if(isset($_POST['submit'])) 
{ 
$name = $_POST['name'];
echo "User has entered this name : <b> $name </b>"; 
}

//capture search term and remove spaces at both ends, if there are any
$searchTerm = trim($name);

//connect to database
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('Error connecting to MySQL server.');

//MYSQL search statement
$query = "SELECT CompanyName FROM Companies WHERE CompanyName LIKE '%$searchTerm%'";

$results = mysqli_query($dbc, $query);

//Check whether there were matching records in the table by counting the number of results returned
if(mysqli_num_rows($results) >= 1) 

    while($row = mysqli_fetch_array($results))
    {
        echo '<div class="query">' . $row['CompanyName'] . '</div>';
    } else
        echo "No match found for " . $searchTerm;

 mysqli_close($dbc); 
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
   <input type="text" name="name"><br>
   <input type="submit" name="submit" value="Submit Form"><br>
</form>
if(isset($\u POST['submit']))
{ 
$name=$_POST['name'];
echo“用户已输入此名称:$name”;
}
//捕获搜索词并删除两端的空格(如果有)
$searchTerm=trim($name);
//连接到数据库
$dbc=mysqli_connect(DB_主机、DB_用户、DB_密码、DB_名称)或die('Error connecting to MySQL server');
//MYSQL搜索语句
$query=“从公司名称类似“%$searchTerm%”的公司中选择公司名称”;
$results=mysqli_查询($dbc,$query);
//通过计算返回的结果数,检查表中是否有匹配的记录
if(mysqli_num_rows($results)>=1)
while($row=mysqli\u fetch\u数组($results))
{
回显“.$row['CompanyName']”;
}否则
回显“未找到的匹配项”$搜索词;
mysqli_close($dbc);
?>

该错误很可能是因为您过早地关闭了
if(isset($\u POST['submit'])
$name
仅在表单post
$name=$\u post['name']上设置,因此在初始页面加载时,在调用
$searchTerm=trim($name)时不会设置它。尝试将结束括号
}
if(isset($\u POST['submit'])
移动到
mysqli\u close($dbc)之后
所以所有的php代码在表单发布之前都不会运行

if(isset($_POST['submit'])) 
{ 
$name = $_POST['name'];
echo "User has entered this name : <b> $name </b>"; 
// remove closing bracket from here

//capture search term and remove spaces at both ends, if there are any
$searchTerm = trim($name);

//connect to database
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('Error connecting to MySQL server.');

//MYSQL search statement
$searchTerm = mysqli_real_escape_string($searchTerm); // Escape user data to prevent SQL Injection
$query = "SELECT CompanyName FROM Companies WHERE CompanyName LIKE '%$searchTerm%'";

$results = mysqli_query($dbc, $query);

//Check whether there were matching records in the table by counting the number of results returned
if(mysqli_num_rows($results) >= 1) 

    while($row = mysqli_fetch_array($results))
    {
        echo '<div class="query">' . $row['CompanyName'] . '</div>';
    } else
        echo "No match found for " . $searchTerm;

 mysqli_close($dbc); 
}  // move closing bracket to here
?>
if(isset($\u POST['submit']))
{ 
$name=$_POST['name'];
echo“用户已输入此名称:$name”;
//从此处拆下封闭支架
//捕获搜索词并删除两端的空格(如果有)
$searchTerm=trim($name);
//连接到数据库
$dbc=mysqli_connect(DB_主机、DB_用户、DB_密码、DB_名称)或die('Error connecting to MySQL server');
//MYSQL搜索语句
$searchTerm=mysqli\u real\u escape\u string($searchTerm);//转义用户数据以防止SQL注入
$query=“从公司名称类似“%$searchTerm%”的公司中选择公司名称”;
$results=mysqli_查询($dbc,$query);
//通过计算返回的结果数,检查表中是否有匹配的记录
if(mysqli_num_rows($results)>=1)
while($row=mysqli\u fetch\u数组($results))
{
回显“.$row['CompanyName']”;
}否则
echo“未找到与“.$searchTerm”匹配的项;
mysqli_close($dbc);
}//将右括号移到此处
?>

学习使用准备好的语句设备:在查询中使用输入字符串之前,请先将其转义,否则您的脚本将被SQLi利用<代码>$results=mysqli_query($dbc,$query)或die($mysqli->error)//查看查询是否有任何错误