Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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
MySQL查询无法读取PHP变量_Php_Mysql_Sql_Post - Fatal编程技术网

MySQL查询无法读取PHP变量

MySQL查询无法读取PHP变量,php,mysql,sql,post,Php,Mysql,Sql,Post,我有一个HTML表单(Datadisplay.HTML),它使用POST方法给出(Datadisplay.php)变量的名称和模型,这些变量被集成到SQL查询($SQL)中。问题是php没有显示任何错误,但我的查询在HTML中只显示空白 我知道一个事实,当我为字符串替换$this->name和$this->model时,它确实会调出信息。任何帮助都将不胜感激 MYSQL TABLE AS id int(11) nombre varchar(100) fecha_remision date m

我有一个HTML表单(Datadisplay.HTML),它使用POST方法给出(Datadisplay.php)变量的名称和模型,这些变量被集成到SQL查询($SQL)中。问题是php没有显示任何错误,但我的查询在HTML中只显示空白

我知道一个事实,当我为字符串替换
$this->name
$this->model
时,它确实会调出信息。任何帮助都将不胜感激

MYSQL TABLE AS
 id int(11)
 nombre varchar(100)
fecha_remision date
modelo varchar(100)
serial varchar(100)
numero_arraigo varchar(100)
数据显示PHP

<?php
//ERROR_REPORTING( E_ALL | E_STRICT );
 if(isset($_POST['type'])){
class DataDisplay
{
//Variable for MySql connection
  private $hookup;
 private $sql;
    private $tableMaster;
private $name;
      private $model;


 public function __construct()
 {
    //Get table name and make connection

    $this->table=$_POST['type'];
    $this->hookup=UniversalConnect::doConnect();
    $this->doDisplay();
    $this->hookup->close(); 
    $this->name=$_POST['name'];
    $this->model=$_POST['model']; 
}

 private function doDisplay()
{
        //Create Query Statement
    $this->sql ="SELECT * FROM $this->table WHERE modelo='$this->model' AND    

  nombre='$this->name'";

    try
    {
    $result = $this->hookup->query($this->sql);

    while ($row = $result->fetch_assoc()) 
    {
         echo "<tr>";
 echo "<td>id " . $row['id'] . "</td></br>";
 echo "<td>Nombre " . $row['nombre'] . "</td></br>";
 echo "<td>fecha de remision " . $row['fecha_remision'] . "</td></br>";
 echo "<td>serial " . $row['serial'] . "</td></br>";
 echo "<td>modelo " . $row['modelo'] . "</td></br>";
 echo "<td>numero de arraigo " . $row['numero_arraigo'] . "</td></br>";
 echo "</tr></br>";


     }

    $result->close(); 
    }
    catch(Exception $e)
    {
      echo "Here's what went wrong: " . $e->getMessage();
    }

 }
}
}
else
    {
    echo"<script>alert('selecciona tipo de activo');</script>";
    }
?>

好的,很难判断您的问题是什么,但是从您发布的内容来看,有几个问题。以下是一些需要注意的事项:

1) 我看到您已经根据“if”子句的结果定义了一个类。在10年的编程生涯中,我从未见过有人这样做,他们通常只是定义类,然后在需要时使用它

2) 我看到您正在定义该类,但我没有看到您实际实例化该类类型的对象或调用任何函数。试着把一些简单的:echo('hello')语句放在不同的地方,看看你是否能找到你的代码

3) 正如另一位评论者所说,你不能把一个对象引用放进双引号中。你不能这样做:

$whatever = "foo bar $this->derp whatnot";
您可以这样做:

$whatever = "foo bar " . $this->derp ." whatnot";
或者(如果我错了,请纠正我)我想你也可以这样做:

$whatever = "foo bar {$this->derp} whatnot";

检查代码中是否存在这些类型的错误,我认为您会发现问题所在

如果希望在双引号内解析对象属性,则需要将它们括在大括号内:

$this->sql = 
   "SELECT * 
    FROM {$this->table} 
    WHERE modelo='{$this->model}' AND nombre='{$this->name}'";

PHP字符串插值在文档中有很好的介绍:

尝试字符串插值的“复杂”形式:

// Works, quoted keys only work using the curly brace syntax
echo "This works: {$arr['key']} and produces the expected output.";
另一种方法是使用串联:

echo "This works: " . $arr['key'] . " and produces the expected output.";
请注意,将POST中的值插入SQL查询是一个首要的安全漏洞,因为它允许SQL注入攻击。为了互联网的安全,请使用PDO prepared statements系统将您的语句替换为SQL语句,不要这样做,您为黑客提供了一个进入服务器的网关,因为您的操作方式允许攻击者插入任意SQL子查询,这些子查询可以执行任何操作,直到将数据库删除到SQL查询中


没必要大喊大叫,我们能读懂你的意思!抱歉,只是想让事情变得更容易阅读,“.$this->model.”而不是“$this->model”
$this->sql=“从“$this->table.”中选择*。$this->model.”和nombre='“$this->name.”我有很高的期望,但是没有,我忘了添加一个注释,表名是由mysql读取的,但是如果我尝试更改字符串的那些变量,那么变量就不是了,留下$this->table它确实对我的坏,如果那是出于测试目的,我会尝试其他两个建议如果我这样做,它会在php上显示一个查询错误,我会尝试使它工作,错误会说什么?请注意,直到一分钟前,我的答案中还有一个输入错误(错放了
'
}
)。致命错误:在第35行的C:\wamp\www\SCAF1.0\DataDisplay.php中的非对象上调用成员函数fetch_assoc(),而($row=$result->fetch_assoc()),到目前为止,我通过使用变量作为参数使其在我的第一次修订版中发挥作用,但我正在考虑更改整个ConConnection类,以使其使用prepare并看到更好的结果我很抱歉,我是编程新手,我还是一名学生,我确实计划在复习错误处理时使其正确,但是现在我正在努力让它工作,我已经看到许多所谓的“专业”程序员编写了您编写的简单PHP字符串替换。所以,如果我听起来很恼火,那是因为我不得不在这些“专业人士”之后收拾残局。一定要研究PDO准备好的语句系统(以及其他语言的类似系统),这是“正确”的方法。
echo "This works: " . $arr['key'] . " and produces the expected output.";