के माध्यम से उपयोग करते समय मैं अपने डेटाबेस में पुनः-हैश उपयोगकर्ता आईडी का प्रयास कर रहा हूं, लेकिन मैं अटक गया हूं।MySQL वाक्यविन्यास त्रुटि, लेकिन केवल PHP
<?php
include("session.php");
include("functions.php");
$conn = ConnectMySQL();
setTimezone($session->username);
$sql = "SELECT username, userid FROM users";
$result = mysql_query($sql) or die(mysql_error());
while($rows = mysql_fetch_array($result)){
$username = $rows['username'];
$old = mysql_real_escape_string($rows['userid']);
$new = mysql_real_escape_string($session->generateRandID());
$moresql = "START TRANSACTION;
UPDATE users SET userid='$new' WHERE userid='$old';
UPDATE comments SET user='$new' WHERE user='$old';
UPDATE forum_posts SET poster_name='$new' WHERE poster_name='$old';
UPDATE forum_topics SET topic_poster_name='$new' WHERE topic_poster_name='$old';
UPDATE images SET author='$new' WHERE author='$old';
UPDATE likes SET user='$new' WHERE user='$old';
UPDATE music SET author='$new' WHERE author='$old';
UPDATE ratings SET user='$new' WHERE user='$old';
COMMIT;";
$newresult = mysql_query($moresql) or die(mysql_error());
if(!$newresult){echo "There was a problem with changing $username's hash. \n";}
else{echo "Changed $username's hash<i>!</i> \n";}
}
mysql_close($conn);
?>
पूरे क्वेरी PHPMyAdmin के माध्यम से पूरी तरह से ठीक काम करता है, बस स्पष्ट रूप से शून्य पंक्तियां देता है। लेकिन जब मैं के साथ प्रयास करें वास्तविक मान पीएचपी के साथ यह हो जाता है का उपयोग कर चूसना इसके माध्यम से पारित किया जा रहा:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE users SET userid='b8aca4b680707453fa4dfe1bf1d0fddb' WHERE userid='8' at line 2
वहाँ कोई अन्य त्रुटियाँ हैं - मैं एक नुकसान में हूँ कि यह क्या है के बारे में सोचना। अग्रिम धन्यवाद,
सैम
पूरी तरह से असंबंधित, लेकिन अपने 'if (! $ newresult)' लाइन कभी नहीं क्योंकि चलाया जाएगा जिस मामले में '$ newresult'' FALSE' के बराबर है 'पहले से ही 'या मर (mysql_error()) से ढका हुआ है;'। सिर्फ मन में रखने वाली कुछ बातें। – Palladium