Je crée un site Web utilisant php et j'ai des problèmes avec une requête SQL.Requête SQL entraînant l'effacement de la page
$dataArray = array();
$result = mysql_query("SELECT * FROM test WHERE web_id='$websiteID'")
or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
$k = $row['kfoo'];
$v = $row['vbar'];
$dataArray[$k] = $v;
}
C'est le code tel qu'il devrait être, mais qui provoque la page d'aller vide (à savoir afficher simplement tout blanc). J'ai vérifié et web_id
est certainement le nom correct et le bon cas.
Si je change web_id
dans la requête pour être, par exemple, « foo » (essentiellement autre chose que web_id
), la page affiche, mais avec le message d'erreur « Unknown column « foo » dans « où la clause » ".
Quelqu'un a-t-il une idée de ce qui pourrait être la cause? Voici le code où je crée le test de la table:
$dataDB = "CREATE TABLE test
(
data_id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(data_id),
web_id INT,
kfoo TEXT,
vbar TEXT
)";
mysql_query($dataDB,$con);
Mise à jour
Sur la base de quelques-unes des réponses ici, je l'ai enlevé les citations du monde websiteID $ et les erreurs affichées à l'aide
error_reporting(E_ALL);
ini_set('display_errors', 1);
Cela a affiché beaucoup d'erreurs, y compris une erreur de syntaxe plus tôt que je l'ai maintenant fixé. Cependant, beaucoup d'erreurs restent et elles n'ont pas beaucoup de sens pour moi. Voici le code complet pour ma méthode:
function getOutputSQL($websiteID,$userInput) {
$result = mysql_query("SELECT * FROM websites WHERE websiteID=$websiteID")
or die(mysql_error());
while ($row = mysql_fetch_array($result)){
$url = $row['url'];
$exp = $row['exp'];
$output= $row['textPrint'];
$endUrlStart = $row['outUrlStart'];
$endUrlEnd = $row['outURLEnd'];
$image = $row['image'];
$print = $row['print'];
$post = $row['post'];
$dataSource = $row['dataSource'];
$dataSourceName = $row['dataSourceName'];
}
// construct array of data names and values
$dataArray = array();
$result = mysql_query("SELECT * FROM test WHERE web_id=$websiteID")
or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
$k = $row['kfoo'];
$v = $row['vbar'];
$dataArray[$k] = $v;
}
// construct array of expressions and replacements
$result = mysql_query("SELECT * FROM regex WHERE web_id=$websiteID");
$expArray = array();
while ($row = mysql_fetch_array($result)) {
$e = $row['ex'];
$r = $row['re'];
$expArray[$e] = $r;
}
return getOutput($userInput,$url,$exp,$output,$endUrlStart,
$endUrlEnd,$dataSource,$dataSourceName,$post,$image,$print,
$expArray,$dataArray);
}
Les erreurs que je reçois sont tous comme ça -
Avis: Undefined variable: sortie en /home/daniel/web/resultsTest.php sur ligne 113"
qui se répète plusieurs fois pour url, exp, sortie, endUrlStart, endUrlEnd, dataSource, dataSourceName, poste, image et imprimer la ligne 113 est la grande ligne de retour.
La chose est, autant que je peux dire ces variables sont définies, et je sais que la table n'est pas vide, parce que je peux l'afficher sur une autre page.
Résolu
Classé. Le problème était en fait dans une autre partie de mon code - j'appelais getOutputSQL de manière incorrecte, mais je l'ai corrigé maintenant!
La citation d'entiers ne sera pas douloureuse. – Tomalak