2013-07-31 2 views
0

Я использую функцию $ _GET для переноса поля базы данных вперед по всей форме. Однако я наткнулся на камень преткновения, когда я пытаюсь вытащить информацию из базы данных:Cookie через форму и GET

<?php 
$prodname=$_GET["q"]; 
?> 

<h3>Product Name: <u><?php echo $prodname; ?></u></h3><br /> 
    <?php 
$con = mysql_connect("localhost","cl49-vogalcms","vogalcms"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

    $prodname=$row['prodname']; 
$catagory=$row['catagory']; 

@mysql_select_db("cl49-XXX",$con)or die('Unable to select database ln 60:'.mysql_error()); 
$result=mysql_query("SELECT * FROM products WHERE prodname=$prodname")or die('ln 61 :'.mysql_error()); 
$cnt=$_COOKIE["count"]; 


setcookie("user",$myid,time()+10000); 
mysql_close($con); 
?> 

    <form name="newad" method="post" enctype="multipart/form-data" action="drtsavepic.php?q=<?php echo"$prodname"; ?>"> <br> <Br> 
    <input type="file" name="image"> 
<input name="Submit" type="submit" value="Upload image"> 

    </form> 

Когда я запускаю этот код, я получаю следующую ошибку

LN 61: У вас ошибка в синтаксисе SQL; в руководстве, соответствует версии сервера MySQL для правильного синтаксиса использовать около «» в строке 1

Можно ли светить свет на этом вопросе?

+0

Надеюсь, у вас есть mysql_real_escape_string вокруг ваших варов? – tobspr

+0

Ваш код уязвим для SQLinjection, и вы используете устаревшие функции. Используйте mysqli http://cz1.php.net/manual/en/book.mysqli.php или pdo http://cz1.php.net/manual/en/book.pdo.php. – Jakolcz

+0

@TobSpr - Не уверен, что это значит - Php Novie здесь! –

ответ

1

Заключите переменную ProductName в кавычки,

как этот

$result=mysql_query("SELECT * FROM products WHERE prodname='$prodname'")or die('ln 61 :'.mysql_error()); 

Потому что там может быть случай, когда имя вашего продукта два слова с пробелом, где запрос терпит неудачу

+0

Спасибо @chandresh_cool, который избавился от этой ошибки! Тем не менее, если i затем помещает элемент эха под этим «echo», то имя этого продукта равно $ prodname »;' На странице просто отображается «Имя этого продукта есть»? –

+0

Это означает, что ваша переменная productname i.e $ prodname пуста или говорит null. –

4

попробуйте заменить этот mysql_query("SELECT * FROM products WHERE prodname=$prodname")

mysql_query("SELECT * FROM products WHERE prodname='".$prodname."'") 
+0

Спасибо, что избавился от этой ошибки! Тем не менее, если i затем поставить echo-оператор под этим «echo», то имя этого продукта будет $ prodname »;' Страница просто показывает «Имя этого продукта:« Как мне получить представление prodname? –

+0

hmmmm ... $ prodname = $ row ['prodname']; ... Где $ row в вашем коде? –

+0

Хмм - PHP начинающий здесь - Не уверен ?? –

Смежные вопросы