MySQL-ті іздеу және жаңарту

Біреу маған көмектесе алады ма?

MySQL дерекқорынан мүше мәліметтерін іздеу үшін пайдаланатын пішінді біріктіруге тырысамын, нәтижелерді сол пішінде алдын-ала анықталған мәтін ұяшықтарында пайда болатындай етіп алыңыз да, жаңартуларды дерекқорға жіберу үшін жасаңыз.

Мен қолданатын код келесідей:

PHP

<?php 
require("phpfile.php"); 

// Opens a connection to a MySQL server 

$connection=mysql_connect ("hostname", $username, $password); 
if (!$connection) { die('Not connected : ' . mysql_error());} 

// Set the active MySQL database 

$db_selected = mysql_select_db($database, $connection); 
if (!$db_selected) { 
die ('Can\'t use db : ' . mysql_error()); 
} 

$email = $_POST['email']; 
$sql = mysql_query("SELECT * FROM userdetails WHERE emailaddress like '%$emailaddress%'"); 

while($row = mysql_fetch_array($sql)) 
{ 
echo $row['forename']; 
echo $row['surname']; 
echo "
"; } ?>

HTML FORM



<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<form action="search.php" method="post">      
  

Search: <input name="emailaddress" type="text" id="emailaddress" />
<input type="submit" name="submit" value="Submit" />

<input name="surname" type="text" id="surname" value="<?php echo $surname; ?>" />

 

</form> </body> </html>

Мен қалаған жазбаны іздеу үшін электрондық пошта мекенжайын пайдаланып жатырмын, бірақ алдымдағы проблема барлық жазбалардың мәліметтерді енгізгеннен гөрі шығарып алынғанын және нәтижелердің атау және формадағы тегін өрістер.

Мүмкін біреу маған қателесіп жатқанымды көрсете алады

Ізгі тілектер

3

3 жауаптар

... бірақ егер сіз ақ түсті электрондық поштаны жаңарту үшін жіберу түймесін бассаңыз, ол келесідей болуы керек:

if(isset($_REQUEST['submit'])) {
$fname = mysql_real_escape_string($_POST['forename']);
$sname = mysql_real_escape_string($_POST['surname']);
$emai= mysql_real_escape_string($_POST['email']);
mysql_query(UPDATE `table` SET `forename` = $fname, `surname` = $sname, `email`=$email WHERE id = `id`);
}
2
қосылды
  1. You should escape the POST input before using it. If you're using MySQL, you may use the mysql_real_escape_string() function:

    $emailaddress = mysql_real_escape_string($_POST['email'])
    
  2. You may populate the form with the retrieved values setting the value parameter in each form input. For security reasons, make sure the output will convert HTML entities:

    <input name="surname" type="text" id="surname" value="<?php echo isset($surname) ? htmlentities($surname) : null; ?>" />
    

Сіз жоғарыда көрсетілген жолды келесідей оқи аласыз: $ аты-жөні? Егер солай болса, htmlentities және шығысын қолданыңыз. Әйтпесе, нөлді қайтарыңыз.

0
қосылды

«$ Email» айнымалысын «$ emailaddress» емес деп атадыңыз. Сұрауыңызды өзгертіңіз:

SELECT * FROM userdetails WHERE emailaddress like '%$email%'

Бұрын сіздің сұрағыңыз «%%» сияқты электрондық пошта мекен-жайын іздей бастады - бұл әрбір электрондық пошта мекенжайын табады.

Екінші ескертуде сіз SQL инъекциясына қарауыңыз керек. Бұл веб-қосымшаларға әсер ететін ең кең таралған қауіпсіздік қатерлерінің бірі, бірақ оны қорғау өте оңай. Мен егжей-тегжейлі түсіндірмеймін, бірақ қазіргі сәтте өзіңіздің жолыңызды ауыстырыңыз:

$email = $_POST['email'];

С:

$email = mysql_real_escape_string($_POST['email']);

Here's more information about SQL injection: http://php.net/manual/en/security.database.sql-injection.php

0
қосылды
Сәлеметсіз бе, кешірім сұрасам, кешірім сұраймын. Менде пайдаланушылардың электрондық пошта мекенжайын енгізетін пішінім бар, содан кейін тиісті ақпарат үшін фамилия мен тегті алу үшін осы ақпаратты mySQL дерекқоры кестесіне жіберемін. Аты-жөні мен аты-жөні мәтін жолақтарын бірдей іздеу формасына толтыру үшін аты-жөні мен фамилиясын алуды қалаймын. Содан соң, мен оны құрастырып, пайдаланушылардың жазбаларына өзгертулер енгізу және өзгертілген ақпаратты дерекқор кестесіне сақтау үшін сол нысанды қолданамын. Бұл көмектеседі деп үміттенемін. Ізгі тілектер
қосылды автор IRHM, көзі
Жеңілдету үшін, мен барлық нәрсені «электрондық пошта мекенжайын» ​​деп атадым, сондықтан бұл процесті түсіну үшін жұмыс істеуге және біраз уақыт жұмсауға үміттенемін деп үміттенемін.
қосылды автор IRHM, көзі
Мен шын мәнінде немқұрайды итермелейді
қосылды автор faq, көзі
Сұрауыңыздағы айнымалы атауды '$ email' деп өзгертдіңіз бе?
қосылды автор user542603, көзі