2017-01-22 3 views
-3

Я хочу сделать запрос в php, вывести данные на странице, а затем изменить его в базе данных.php Обновление sql и запроса

Как это сделать?

В настоящее время я делаю это так, но доза не работает:

$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM pics WHERE id = '$id'"; 
$result = $conn->query($sql); 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     $dir = $row["dir"]; 
     $likes = $row["likes"]; 
    } 

$sqlq = "UPDATE pics SET likes='$likes+1' WHERE id='$id'"; 

$conn->query($sqlq); 

$conn->close(); 

Но как доза не добавлять в базу данных.

+1

Каким образом это не удается? Есть ли ошибки в журналах PHP? Почему вы не проверяете ошибки в запросах базы данных? – David

+0

не удалось выполнить обновление –

+0

Нет журнала ошибок. Все работает, просто, когда я смотрю на базу данных, подобное значение не изменяется. И его не изменено на странице. –

ответ

1

Если эхо ваш $ sqlq с использованием

echo $sqlq; 

вы увидите, что '$likes+1' не делать то, что вы ожидаете.

Вы могли бы действительно упростить, выполнив

$sqlq = "UPDATE pics SET likes=likes+1 WHERE id='$id'"; 

, который удаляет любой риск двух пользователей при обновлении базы данных в Teh одновременно перезапись друг друга.

Но вы действительно должны проверить использование «параметризованных запросов», поскольку это решит все ваши проблемы (и ваши вопросы будут более безопасными). Проверьте примеры в руководстве http://php.net/manual/en/mysqli-stmt.bind-param.php

+0

Спасибо! Теперь это работает! –

+0

Добро пожаловать. Если вы воспользовались «быстрым исправлением», пожалуйста, потратьте 5 минут спустя на ссылку с параметризованным запросом (bind-param), чтобы сделать ваш код более безопасным и более легким для чтения/отладки. – Robbie

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