MySQL не будет обновлять данные БД с помощью php - PullRequest
2 голосов
/ 12 марта 2012

Я не вижу проблемы в форме обновления, но, что бы я ни делал, она не обновит мою базу данных. Я надеялся, что кто-то здесь сможет мне помочь.

Я пытался использовать mysql_error () после оператора обновления, но ошибок не было обнаружено, и попытался повторить оператор обновления и не смог увидеть никаких проблем.

URL = http://localhost/maga/php/update_red.php?id=6&read=14

<?php
$host="localhost";
$pass="*****";
$user="my_db_user";
$db="my_db_name";
$tblname="artikler";

$con=mysql_connect($host, $user, $pass)or die(mysql_error());
mysql_select_db($db)or die(mysql_error());

$read=(int)$_GET['read'];
$id=$_GET['id'];

$read++;

mysql_query("UPDATE $tblname SET read='$read' WHERE id='$id'");

?>

Ответы [ 7 ]

2 голосов
/ 12 марта 2012

read - это зарезервированное слово , , поэтому для работы в запросе его необходимо специально заключить в кавычки с обратными галочками

так что попробуйте

if (!mysql_query("UPDATE $tblname SET `read`='$read' WHERE id='$id'"))
{
    die("update failed with error ".mysql_error());
}

Кроме того, значение $ id никоим образом не очищается, поэтому код уязвим для атаки SQL-инъекцией. Определенно стоит потратить время на изучение таких вещей.

0 голосов
/ 13 марта 2012

обнаружил проблему, я думаю, что "read" является значением sql, потому что когда я изменил имя столбца, у меня не было проблем с его обновлением ... но спасибо за все хорошие советы ...

0 голосов
/ 12 марта 2012

Попробуйте это

\\In your script add the below line and try whether its working
$con=mysql_connect($host, $user, $pass)or die(mysql_error());
mysql_select_db($db,$con)or die(mysql_error());
0 голосов
/ 12 марта 2012

Попробуйте этот код:

<?php
$host="localhost";
$pass="*****";
$user="my_db_user";
$db="my_db_name";
$tblname="artikler";

mysql_connect($host, $user, $pass)or die(mysql_error());
mysql_select_db($db)or die(mysql_error());

$read=(int)$_GET['read'];
$id=$_GET['id'];

$read++;

mysql_query("UPDATE $tblname SET read='$read' WHERE id='$id'");

mysql_close();

?>
0 голосов
/ 12 марта 2012

Вы не передаете соединение с базой данных в вашем mysql_query:

mysql_query("UPDATE $tblname SET read='".$read."' WHERE id='".$id."'", $con);
0 голосов
/ 12 марта 2012

сделай очень простую вещь, echo "UPDATE $tblname SET read='$read' WHERE id='$id'";
Попробуйте запустить запрос из phpmyadmin или любого другого инструмента, который вы используете для написания запросов mysql.


Посмотрим, даст ли это какую-нибудь ошибку

0 голосов
/ 12 марта 2012

Попробуйте вывести ваш запрос:

print("UPDATE $tblname SET read='$read' WHERE id='$id'");

Кроме того, ваше поле идентификатора - это число?Если это так, избавьтесь от кавычек, которые у вас есть.

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