我想通過下面的代碼更新MySQL數據庫,但它不工作,爲什麼?更新datebase by php
<?php
mysql_connect("localhost","root","");
mysql_select_db("timer");
$update=$_COOKIE['name'];
mysql_query("UPDATE user SET password='2' WHERE username=$update");
?>
我想通過下面的代碼更新MySQL數據庫,但它不工作,爲什麼?更新datebase by php
<?php
mysql_connect("localhost","root","");
mysql_select_db("timer");
$update=$_COOKIE['name'];
mysql_query("UPDATE user SET password='2' WHERE username=$update");
?>
應該引用字符串值:MySQL String Literals。
mysql_query("UPDATE user SET password='2' WHERE username='$update'");
使用準備好的查詢,你這樣做的方式不是一個好的做法。還檢查$update
不爲空,否則查詢將無法正常工作,最後,使用mysqli_*
功能,而不是mysql_*
:)
<?php
mysql_connect("localhost","root","");
mysql_select_db("timer");
$update=$_COOKIE['name'];
mysql_query("UPDATE ´user´ SET password='2' WHERE username='$update'");
?>
嘗試在此查詢這樣說你的表的名稱:'user'
讓我推薦你,如果你的查詢不起作用,那麼你可以把整個查詢放在回聲(或打印),看看有什麼不對。
例如:
echo "mysql_query(\"UPDATE user SET password='2' WHERE username=$update\";
$dsn = 'mysql:dbname=timer;host=127.0.0.1';
$user = 'root';
$password = '';
$update=$_COOKIE['name'];
$query = 'UPDATE user SET password='2' WHERE username=(?)';
try {
$dbh = new PDO($dsn, $user, $password);
$dbh->prepare($query)->execute(array($query));
} catch (PDOException $e) {
echo 'Connection failed ' . $e->getMessage();
}
不能確定它是否工作,因爲我不知道你在你的$ _COOKIE數組。
但代碼應該看起來像這樣。
爲了安全起見,您可以爲變量$ update添加一些文本轉換,如addslashes或其他。
它更好地使用mysqli或PDO並使用準備好的語句而不是直接輸入,請參見http://www.php.net/manual/en/ref.pdo-mysql.php – DarkBee
您正在使用[an **過時**數據庫API](http://stackoverflow.com/q/12859942/19068),並應使用[現代替換](http://php.net/manual/en/mysqlinfo.api.choosing.php)。你還**易受[SQL注入攻擊(http://bobby-tables.com/)**,一個現代化的API會更容易爲[維護](http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己從。 – Quentin