2014-10-09 2 views
0

У меня есть HTML-форма (Datadisplay.html), которая использует метод POST для представления (datadisplay.php) имени и модели переменных, которые интегрированы в SQL-запрос ($ sql). Проблема в том, что php не отображает никаких ошибок, но мой запрос отображается просто в HTML.MySQL-запрос не умеет читать переменные PHP

Я знаю, что факт остальное работает с тех пор, как я заменяю $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>"; 
    } 
?> 

отображения данных HTML

<!doctype html> 
<html> 
<head> 
<link rel="stylesheet" type="text/css" href="css/easy.css"> 
<meta charset="UTF-8"> 
<title>SCAF</title> 
</head> 
<body> 
<header> 
</header> 
<div> 
<h2>Consulta</h2> 
</div> 
<form action="Client.php" method="post" target="feedback"> 
<div><strong>informacion del activo:</strong><br /> 
    <label for="name">Name:</label> 
<input type="text" name="name" id="name"> 
<br /> 
<!--cambiar modelo por proyecto(propiedad de tabla), tambien cambiar por radios de 
nombre de proyectos--> 
<label for="model">modelo:</label> 
<input type="text" name="model" id="model"> 
<br /> 
<p /> 
</div> 
    <div><strong>categoria</strong><br /> 
<label for="cs2">transporte:</label> 
<input type="radio" name="type" id="cs2" value="transporte"> 
<br/> 
<label for="cs1">maquinaria:</label> 
<input type="radio" name="type" id="cs1" value="maquinaria"> 
<br/> 
<label for="cs">maquinaria pesada:</label> 
<input type="radio" name="type" id="cs" value="maquinaria pesada"> 
<br /> 
</div> 
<br /> 
    <div> 
    <input type="submit" name="all" value="buscar"> 
    </div> 
</form> 
<p /> 
<div><strong></strong> 
    <p /> 
    </div> 

    <iframe name="feedback" seamless width="300" height="200">PHP</iframe> 
<div> 
<p> 
<a href="EasyUpdateOOP.html">Update and Drop Files</a> 
</p> 
</div> 
</body> 
</html> 
+0

Там нет необходимости кричать, мы можем прочитать вам просто отлично! – halfer

+0

Извините, просто хотелось упростить чтение –

+1

Попробуйте сделать это. $ This-> model. "'Вместо' $ this-> model ' –

ответ

0

вы должны вложить объект СВОЙСТВА s в фигурные скобки, если вы хотите, чтобы они разобраны в двойных кавычках:

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

, если я сделаю это так, он отображает ошибку запроса на php, я попытаюсь заставить его работать –

+0

Что говорит об ошибке? Обратите внимание, что у меня была опечатка в моем ответе до минуты назад (неуместно '' 'и'} '). – Shomz

+0

Неустранимая ошибка: вызовите функцию-член fetch_assoc() для не-объекта в C: \ wamp \ www \ SCAF1.0 \ DataDisplay.php в строке 35, которая равна –

0

Ok это своего рода трудно сказать, что ваш вопрос, но от того, что Вы разместили там пара вопросы. Вот что посмотреть на:

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"; 

Проверьте код для этих типов ошибок и я думаю, что вы найдете вашу проблему

+0

мой плохой для того, если это было для целей тестирования, и я попробую с другими 2 предложениями –

0

PHP строка интерполяция хорошо освещена в документации:

http://php.net/manual/en/language.types.string.php#language.types.string.parsing.simple

попробовать «сложный» вид интерполяции строк:

// Works, quoted keys only work using the curly brace syntax 
echo "This works: {$arr['key']} and produces the expected output."; 

в качестве альтернативы можно использовать конкатенацию:

Обратите внимание, что вставка значений из POST в SQL-запрос - это отверстие безопасности первого порядка, поскольку оно допускает атаки SQL-инъекций.Пожалуйста, для обеспечения безопасности в Интернете используйте систему подготовленных отчетов PDO, чтобы делать ваши замены в SQL-операциях, НЕ делайте этого таким образом, вы предоставляете шлюз для хакеров на ваш сервер, потому что, как вы это делаете, атакующему, чтобы вставить произвольные SQL-подзапросы, которые могли бы сделать все, вплоть до удаления базы данных в ваш SQL-запрос!

http://php.net/manual/en/pdo.prepare.php

+0

Мне очень жаль, я новичок к программированию, я все еще студент, я планирую сделать это правильно, когда я перехожу к обработке ошибок, но сейчас я пытаюсь заставить его работать –

+0

Я видел, как многие, предположительно, «профессиональные» программисты пишут простой PHP строка, которую вы написали. Поэтому, если меня раздражает, это потому, что мне пришлось убираться после этих «профессионалов». Изучите подготовленную систему отчетов PDO (и аналогичные системы для других языков), это «правильный» способ сделать что-то. –