Как вставить данные в таблицу, в которой имя таблицы является переменной php, которая изменяется в зависимости от нажатия кнопки? - PullRequest
1 голос
/ 10 марта 2019

Я хочу вставить данные только в текущую таблицу (которые уже созданы администратором и являются пустыми), а не во все таблицы при нажатии кнопки «Применить».Но этот код вставляет одни и те же данные во все таблицы.Вот мой кодКак это исправить?

<?php
//Setting up Database connection
$con=mysqli_connect("localhost","root","","bhc-tpd-db");
//Check Connection
if(mysqli_connect_errno())
{
echo "<script>alert('Database connection failed')</script>";
}

//Query to fetch records from the table
$query="SELECT * FROM event";
//Execute the query and store the result set
if ($result = $con->query($query))
{
    //output data of each row
    $row="";
    global $cname;

    while ($row=mysqli_fetch_array($result))
    {
    $cname=$row['cname'];
    echo "<center><table>
    <tr><th>Company Name</th><td>".$cname."</td></tr>
    <tr><th>Job Title</th><td>".$row["job_title"]."</td></tr>
    <tr><th>Job Description</th><td>".$row["job_desc"]."</td></tr>
    <tr><th>Preferred Candidates</th><td>".$row["candidates"]."</td></tr>
    <tr><th>Eligibility</th><td>".$row["eligibility"]."</td></tr>
    <tr><th>Salary Package/CTC</th><td>".$row["salary"]."</td></tr>
    <tr><th>Job Location</th><td>".$row["job_location"]."</td></tr>
    <tr><th>Selection Process</th><td>".$row["sel_procs"]."</td></tr>
    <tr><th>Venue</th><td>".$row["venue"]."</td></tr>
    <tr><th>Event Date</th><td>".$row["event_date"]."</td></tr>
    <tr><th>Event Time</th><td>".$row["event_time"]."</td></tr>
    <tr><th>Comment</th><td>".$row["comment"]."</td></tr>
    <tr><td colspan='2' style='text-align:right;'><button name='apply'>Apply</button></td></tr>
    </table></center>";

    echo "<hr>";

    if (isset($_POST['apply']))
    {
    $username=$_SESSION['username'];

    //$tablename[$row]=$row["cname"];
    $query="INSERT INTO $cname SELECT * FROM stu_reg WHERE email='$username' IF NOT EXISTS";
        if ($row=mysqli_fetch_array($result))
        {
        echo "<script>alert('".$cname ." Registered successfully');</script>";
        }
        else
        {
        echo "<script>alert('".$cname ." ERROR / Already Registered');</script>";
        }
    }
    }//while ending
}   

else
{
echo "0 events";
}

?>

1 Ответ

1 голос
/ 10 марта 2019

Я предполагаю, что вокруг этой части скрипта есть какой-то html.Так как у вас есть несколько кнопок с одинаковым именем ('apply'), он найдет $ POST ['apply'] для всех строк, что объясняет ваше текущее поведение.Если вы поместите значение в каждую кнопку:

<button name='apply' value='$cname'>...</button>

И вы сделаете что-то вроде:

if (isset($_POST['apply']) && $_POST['apply'] == $cname)

Это, вероятно, будет работать правильно.Не забывайте избегать любого пользовательского ввода, чтобы защитить себя от SQL-инъекций.Также экранируйте $ cname в случае, если в имени есть апострофы.

В запросе mysql вы должны поместить имя таблицы в кавычки, такие как:

INSERT INTO `$cname`

Поскольку $ cname isкоманда или свойство из mysql (например, USER, DATA или TABLE), в противном случае ваш скрипт вылетит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...