所有服务器详细信息都正确放置,并且连接确实正确发生,我似乎无法找到输出中显示的语法错误.
<?php
ob_start();
$phn=$_GET['phn'];
$con = mysql_connect("<server>","<user>","<pass>") or die('error' . mysql_error());
$db_selected = mysql_select_db('<db name>', $con);
if (!$db_selected) {
die ('Can\'t use user : ' . mysql_error());
}
$characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
$key= '';
for ($i = 0; $i < 9; $i++) {
$key.= $characters[rand(0, strlen($characters) - 1)];
}
echo $key;
$sql="INSERT INTO buser (phone, key) VALUES (".$phn.",'".$key."')";
if($result = mysql_query($sql ,$con) or die ('Error: '.mysql_error ()))
{
$q="SELECT * FROM buser WHERE phone=$phn";
$idd=mysql_query($q,$con) or die ('Error: '.mysql_error ());
while($row = mysql_fetch_assoc($idd))
{
$id=$row['bid'];
}
}
?>
Run Code Online (Sandbox Code Playgroud)
输出:
错误:SQL语法中有错误; 查看与您的MySQL服务器版本对应的手册,以便在第1行的'key)VALUES(9999,'ywfjj2dtc')附近使用正确的语法
KEY
是MySQL保留的关键字.您必须将其括在反引号中,以将其用作列或表标识符.
$sql="INSERT INTO buser (phone, `key`) VALUES (".$phn.",'".$key."')";
Run Code Online (Sandbox Code Playgroud)
您的脚本易受当前形式的SQL注入攻击.至少,您必须调用mysql_real_escape_string()
值$phn
.
$phn = mysql_real_escape_string($_GET['phn']);
Run Code Online (Sandbox Code Playgroud)
从长远来看,考虑切换到支持预处理语句的API,如MySQLi或PDO.